C语言辅导:在DirectX中将屏幕坐标转成空间坐标
来源:优易学  2011-1-15 16:23:02   【优易学:中国教育考试门户网】   资料下载   IT书店

123456789101112131415 Point p = Cursor.Position;
p = this.PointToClient(p);

Vector3 v1 = new Vector3(p.X, p.Y, 0f);
v1.Unproject(this.GraphicDevice.Viewport, this.GraphicDevice.Transform.Projection,

 this.GraphicDevice.Transform.View, this.GraphicDevice.Transform.World);

Vector3 v2 = new Vector3(p.X, p.Y, 1f);
v2.Unproject(this.GraphicDevice.Viewport, this.GraphicDevice.Transform.Projection,

this.GraphicDevice.Transform.View, this.GraphicDevice.Transform.World);

float fParam = (v1.Y - 0f) / (v1.Y - v2.Y);

Vector3 v3 = new Vector3();
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便是计算之后的坐标

责任编辑:虫虫

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训