2014-12-01 57 views
0

我正在使用網格和給定平面的剪切算法,它已經切片網格,但我需要用一個或多個2D多邊形覆蓋這些孔,我已經有了所有代表多邊形的3d點,所以下一步將是生成代表多邊形的三角形,我已經找到了一個算法來對一個二維多邊形進行三角化,但是我有一個麻煩的理解:「如何將3d點轉換爲與給定的平面2d的創建切片網格的端蓋

我發現這個鏈接:Retrieve 2D co-ordinate from a 3D point on a 3D plane

但是我不知道什麼做imagePosTo3D做。

任何幫助,高度讚賞,謝謝!

回答

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); 

,然後通過每個3D點乘以transformMatrix並使用X和Z座標