设为首页 加入收藏

TOP

在DirectX中将屏幕坐标转成空间坐标
2014-11-23 22:51:36 】 浏览:381
Tags:DirectX 中将 屏幕 坐标 空间

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便是计算之后的坐标


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C#在WinCE5.0调用控制面板 下一篇c#一个算质数的小程序

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目