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便是计算之后的坐标
【在DirectX中将屏幕坐标转成空间坐标】相关文章:
2025年外省高中学业水平合格性考试成绩转入江苏认定的通告公布05-09
Vb中控件的自动排列05-09
中国大地保险公司实习报告05-09
07年4月北师大“中国古代文学史(一)”串讲(5)05-09
汪涵讲述小时候成长经历:鸡毛掸子的故事05-09
2023年广东梅州中考成绩查询时间及查分入口[7月7日起]05-09
儿童舞蹈教程:国标新手上路05-09
2024年江苏中级导游等级考试准考证打印时间及入口(11月18日9:00起)05-09
嘿我成功了作文05-09
成长的作文05-09
