【问题标题】:creating end-caps for sliced mesh为切片网格创建端盖
【发布时间】:2025-12-04 05:10:02
【问题描述】:

我正在研究一种带有网格和给定平面的裁剪算法,它已经对网格进行了切片,但我需要用一个或多个 2d 多边形覆盖孔,我已经有了代表多边形,所以下一步是生成表示多边形的三角形,我已经找到了一种对 2d 多边形进行三角剖分的算法,但我在理解时遇到了麻烦:“如何使用给定的平面将 3d 点转换为 2d

我找到了这个链接:Retrieve 2D co-ordinate from a 3D point on a 3D plane

但我不确定 imagePosTo3D 是做什么的。

非常感谢任何帮助,谢谢!

【问题讨论】:

    标签: c# 3d mesh


    【解决方案1】:

    看来我在这里找到了答案:

    http://xboxforums.create.msdn.com/forums/p/16529/86429.aspx

    Vector3 up = Vector3.Normalize(plane.N);
    Vector3 right = Vector3.Normalize(Vector3.Cross(up, Math.Abs(plane.N.X) > Math.Abs(plane.N.Z) ? Vector3.UnitZ : Vector3.UnitX));
    Vector3 backward = Vector3.Cross(right, up);
    
    Matrix4 transformMatrix = new Matrix4(right.X, up.X, backward.X, 0, right.Y, up.Y, backward.Y, 0, right.Z, up.Z, backward.Z,0, 0, 0, 0, 1);
    

    然后将 transformMatrix 乘以每个 3d 点并使用 x 和 z 坐标

    【讨论】: