为切片网格创建端盖
本文关键字:创建 网格 切片 | 更新日期: 2023-09-27 18:32:34
我正在研究一种带有给定平面的网格的裁剪算法,它已经对网格进行了切片,但我需要用一个或多个 2d 多边形覆盖孔,我已经拥有代表多边形的所有 3d 点,所以下一步是生成代表多边形的三角形, 我已经找到了一种对 2d 多边形进行三角测量的算法,但我在理解方面遇到了麻烦:"如何使用给定平面将 3d 点转换为 2d"
我找到了这个链接:从 3D 平面上的 3D 点检索 2D 坐标
但我不确定图像PosTo3D是做什么的。
任何帮助都非常感谢,谢谢!
好吧,我似乎在这里找到了答案:
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);
然后将变换矩阵乘以每个 3d 点并使用 x 和 z 坐标