0

好的,所以我试图在不计算垂直向量的情况下获得二维三角形中一个点的距离。

float qd = Vector2f.dot(new Vector2f(pos.x, pos.z),
                        new Vector2f(normal.pos.x, normal.pos.z)) -
           Vector2f.dot(new Vector2f(q.center.x, q.center.z),
                        new Vector2f(normal.pos.x, normal.pos.z));

这就是我正在使用的代码。(注意:它将 3f 向量转换为 2d 向量,但您不必担心)。我需要计算的结果介于 0 和 1 IE 0.5 之间。

如果我仍然没有正确解释,也许这会有所帮助? 轴示例

我的问题是:如何在不计算垂直向量距离的情况下获得二维三角形中点的距离?IE如果三角形朝上(y = -1)没有任何倾斜,我需要三角形中没有任何X的距离。

Edit1:关于你在说什么,Banthar,这就是我从中得到的,它不起作用,但它似乎接近工作。

float d = (float) Math.sqrt( 0 /*cause the two x's should be the same */ + Math.pow(pos.z - q.max.z, 2));   
float h = (float) Math.sqrt( 0 /*cause the two x's should be the same */ + Math.pow(q.min.z - q.max.z, 2)); 

float myDist = d/h;
4

1 回答 1

2

假设您的三角形是 ABC,点是 P。您要查找的数字是从 P 到 AB 的距离除以从 C 到 AB 的距离。这与对应区域的比例相同。所以你可以计算两个区域:

Area(ABP) / Area(ABC)

计算三角形面积的最佳方法取决于您掌握的有关三角形的信息。

如果您只有顶点,那么您可以使用:

Area(ABP) / Area(ABC) = ( Ax*By - Ax*Py + Ay*Px - Ay*Bx + Bx*Py - By*Px ) /
                        ( Ax*By - Ax*Cy + Ay*Cx - Ay*Bx + Bx*Cy - By*Cx )
于 2012-06-24T07:23:54.137 回答