我正在研究一个带有网格和给定平面的裁剪算法,它已经对网格进行切片,但是我需要用一个或多个2d多边形覆盖这些洞,我已经拥有代表所有的三维点多边形,所以下一步将是生成表示多边形的三角形,我已经找到了一个三角形三角形算法,但我很难理解:“如何用给定的平面将3d点转换为2d “
我找到了这个链接:Retrieve 2D co-ordinate from a 3D point on a 3D plane
但我不确定 imagePosTo3D 做了什么。
任何帮助都非常感谢,谢谢!
答案 0 :(得分:0)
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坐标