您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> C语言 >> 辅导 >> 正文    
  在DirectX中将屏幕坐标转成空间坐标 【注册男护士专用博客】          

在DirectX中将屏幕坐标转成空间坐标

www.nanhushi.com     佚名   不详 

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

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目