我想计算具有指定 Z 坐标的 3D 三角形的两个点。我想这样做的方法是以某种方式创建一个与我给定的 Z 坐标完全平坦的平面,然后计算三角形与其相交的位置(或者这是错误的)。
如果您知道如何以任何方式执行此操作,请提供帮助。我已经搜索过但没有真正找到任何似乎有效的东西。
我想计算具有指定 Z 坐标的 3D 三角形的两个点。我想这样做的方法是以某种方式创建一个与我给定的 Z 坐标完全平坦的平面,然后计算三角形与其相交的位置(或者这是错误的)。
如果您知道如何以任何方式执行此操作,请提供帮助。我已经搜索过但没有真正找到任何似乎有效的东西。
假设您的三角形由三个点定义,其中 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