用给定的Z计算两个三角形点

时间:2013-09-19 03:46:52

标签: c# xna geometry intersection monogame

我想计算具有指定Z坐标的3D三角形的两个点。我想这样做的方法是以某种方式创建一个与我给定的Z坐标完全平坦的平面,然后计算三角形与它相交的位置(或者这是错误的)。

如果您知道如何以任何方式执行此操作,请提供帮助。我已经搜索过但似乎没有找到任何似乎有用的东西。

1 个答案:

答案 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