1

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

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

4

1 回答 1

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

于 2013-09-20T11:09:13.097 回答