Articles of 重心坐标

顶点坐标为负值时如何获得重心坐标?

我正在学习做纹理贴图,而且我只有世界坐标,这意味着我的三角坐标有时是负的。 因此,我得到负重心坐标,这似乎是不正确的。 在这种情况下,我怎样才能得到正确的重心坐标?

纹理映射结果不正确?

我一直在debugging这个程序几天,但还没有得到任何改善。 我想添加纹理到我的三角形。 我使用左手坐标,我的三角形的顶点是逆时针定义的。 这是我的“obj”文件: m // mesh vertices 4 0.0 0.0 4.22 4.63 0.0 4.22 0.0 0.0 0.0 4.63 0.0 0.0 texturecoords 4 floor.ppm -0.260944 0.490887 3.619507 0.490887 3.619507 -3.043434 -0.260944 -3.043434 triangles 1 0 3 2 0 2 3 // [vertex idx] [txt idx] 和我用来做纹理映射的那段代码: Triangle *tri = dynamic_cast<Triangle *>(record.obj); // Triangle instance owns […]

线交叉码中的参数说明

我想了解一个移动网格节点的C代码,每个时间步骤,我完全触及参数t1和t2,请帮我分拣出来。 所以这里是函数得到的(Xa,Ya)(Xb,Yb)(Xc,Yc)和(Xd,Yd)其中(Xc,Yc)是网格旋转的原点(0,0),现在我有(Xa,Ya)(Xb,Yb)和(Xc,Yc)(Xd,Yd)形成的两条线之间的交点的线的重心forms中的参数)我不知道t2是什么 代码是 static void find_t(real xa, real ya, real xb, real yb, real xc, real yc, real xd, real yd, real *t1, real *t2, int * flag) { if((xd==xc)&&(xb!=xa)) { if(yd==yc) { Message0("\nc and d are the same points-aborting!!!\n"); exit(0); } (*flag) = 2; (*t1) = (xc-xa)/(xb-xa); (*t2) = ((yb-ya)*(*t1)-(yc-ya))/(yd-yc); } else if((xd!=xc)&&(xb==xa)) { […]

简单的方法将点投影到三角形(或平面)

我有一个三角形网格(导航网格),并在三维空间中的一个点。 这一点应该总是“超越”其中一个三角形。 我试图确定哪个三角形是一个点是“结束”,但我不能弄明白。 我已经find了一种方法来确定点是否在三角形中,使用这里描述的技术之一,但我不能完全弄清楚如何投影三角形上的点(或三角形所在的平面) )。 我一直在网上找,但我找不到有用的东西。 有谁知道如何把一个点投影到一个三角形(或平面)? 另外,如果有人知道一个更好的方法来testing哪个三角形是一个重点,它将不胜感激。

在UV坐标中查找像素

我正在建立3D模型的光照贴图。 我的光照贴图algorithm需要确定光照贴图纹理中的哪些像素(stream明)落在网格面(三角形)的边界内…此过程发生在每个网格面上… 我使用重心坐标技术来完成这个任务。 它适用于大部分…这里是代码: bool PixelIsWithinBounds( const D3DXVECTOR2 &t0, const D3DXVECTOR2 &t1, const D3DXVECTOR2 &t2, const D3DXVECTOR2 &pUV ) { // compute vectors D3DXVECTOR2 v0 = t1 – t0, v1 = t2 – t0, v2 = pUV – t0; // do bounds test for each position float f00 = D3DXVec2Dot( &v0, &v0 ); float f01 […]

将点转换为其重心坐标

我正在制作一个2.5D游戏引擎(在JavaScript中),我试图让它检测一个块是否在光标下。 这将是一个简单的任务,它被限制在单级等距坐标,而是它应该支持等距世界,三角世界,以及任何投影角度真的,除了它是多层次的(瓷砖可以堆叠在每个其他达到任意限制)。 几乎所有的条件都是任意的,但现在我已经设法缩小了这个问题: 我需要知道一个点是否在六边形内: 到目前为止,我已经设置了一些有点骇人听闻的东西,我正在检查点是否在边界矩形内,以便删除最明显的情况。 接下来,我正在检查它是否在点ACDF形成的矩形内,另一个简单的检查。 现在困难的部分是我需要检查点是否在三角形内。 如果你有重心坐标,这是非常简单的,但我似乎已经失去了如何获得它们的所有知识。 请注意,虽然内部矩形总是矩形,但三角形可能不是等边的。 如果因为三角形的底部(或顶部)是平坦的而进行优化,则奖励分数。

什么是find重心坐标的最有效的方法?

在我的剖析器中,find重心坐标显然有些瓶颈。 我正在寻求使它更有效率。 它遵循shirley中的方法,计算通过将点Pembedded三角形形成的三角形的面积。 码: Vector Triangle::getBarycentricCoordinatesAt( const Vector & P ) const { Vector bary ; // The area of a triangle is real areaABC = DOT( normal, CROSS( (b – a), (c – a) ) ) ; real areaPBC = DOT( normal, CROSS( (b – P), (c – P) ) ) ; real areaPCA […]