在DirectX中將屏幕坐標轉成空間坐標
123456789101112131415點p =光標。位置;
p =這個。PointToClient(p);
曏量3 v1 =新曏量3(p.X,p.Y,0f);
v1。取消項目(這個。GraphicDevice.Viewport。圖形設備.轉換.投影,
這個。GraphicDevice.Transform.View,this。graphic device . transform . world);
曏量3 v2 =新曏量3(p.X,p.Y,1f);
v2。取消項目(這個。GraphicDevice.Viewport。圖形設備.轉換.投影,
這個。GraphicDevice.Transform.View,this。graphic device . transform . world);
float fParam = (v1。Y - 0f) / (v1。Y - v2。y);
vector 3 v3 = new vector 3();
v3。X = v1。X - (v1。X - v2。x)* fParam;
v3。y = 0;
v3。Z = v1。Z - (v1。Z - v2。z)* fParam;
先算出z = 0和z = 1兩種情況下的空點,即切割的最近距離和最遠距離。然後根據Y=f3DY(我這裡已經直接把f3DY設置爲0了,見第10行代碼),我們可以截一次,按比例得到x和z。
V3是計算出的坐標。
位律師廻複
0條評論