我想计算具有指定Z坐标的3D三角形的两个点。我想这样做的方法是以某种方式创建一个与我给定的Z坐标完全平坦的平面,然后计算三角形与它相交的位置(或者这是错误的)。
如果您知道如何以任何方式执行此操作,请提供帮助。我已经搜索过但似乎没有找到任何似乎有用的东西。
答案 0 :(得分:0)
假设您的三角形由三个点定义,其中T0是基础左侧,T1是右侧,T2是尖端。 关于三角形如何对齐等许多其他假设:
public bool GetIntersect(Vector3 T0, Vector3 T1, Vector3 T2, float Z, out Vector3 P0, out Vector3 P1)
{
if (!((Z <= T2.Z) && (Z >= T0.Z) && (Z >= T1.Z)))
return false;
var left = T2 - T0;
left *= 1f / left.Z;
var right = T2 - T1;
right * 1f / right.Z;
P0 = T0 + (left * (Z - T0.Z));
P1 = T1 + (right * (Z - T1.Z));
return true;
}
P.S;参数名称中的大写是坏的!不要那样做!我现在不在乎修正我的错误:P