好的,所以我正在尝试实现这张图片中的内容:
我相信这将是一个重心坐标系统,但是 X 总是等于 1?基本上,当我向/远离三角形的最高点移动时,我只需要它增加/减少。这是到目前为止我得到的代码(注意我在java中使用LWJGL库)。
public float getDist( Vector3f p, Vector3f a, Vector3f b, Vector3f c )
{
Vector3f v0 = new Vector3f(0,0,0);
Vector3f.sub( c, a, v0 );
Vector3f v1 = new Vector3f(0,0,0);
Vector3f.sub( b, a, v1);
Vector3f v2 = new Vector3f(0,0,0);
Vector3f.sub( p, a, v2 );
float dot00 = Vector3f.dot(v0, v0);
float dot01 = Vector3f.dot(v0, v1);
float dot02 = Vector3f.dot(v0, v2);
float dot11 = Vector3f.dot(v1, v1);
float dot12 = Vector3f.dot(v1, v2);
float inverse = 1.0f / (dot00 * dot11 - dot01 * dot01);
float u = (dot11 * dot02 - dot01 * dot12) * inverse;
float v = (dot00 * dot12 - dot01 * dot02) * inverse;
if((u >= 0) && (v >= 0) && (u + v <= 1)) return (float) (Math.sin(u) * Math.cos(v));
else return 0;
}
编辑:我想我要问的是:有没有办法得到三角形内的一个点从三角形在空间中的最低点经过的距离,其中 1 将是三角形上的最高点(最远从最低点)而不考虑它的偏离向量?IE 注意到图像上的两个红点具有相同的坐标,即使它们与顶部 x 的距离不同?
编辑2: