写了两个程序 透视的
然后发现一个问题 一模一样的代码
其中一个程序是 世界坐标转屏幕范围 是准的 可以画出方框
但是 世界坐标转屏幕坐标 就飞到天上了
另一个程序是 世界坐标转屏幕坐标是对的 可以瞄出来点
但是世界坐标转屏幕范围的方框就飞天上了
用的代码一模一样 但是这个 整的很迷茫
以下是代码
|
世界坐标转屏幕坐标 | 逻辑型 | | |
Pos | D3D坐标 | | | | outPos | D2D坐标 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 距离 | 整数型 | | | ViewW | 小数型 | | | BoxX | 小数型 | | | SightX | 整数型 | | | BOXY | 小数型 | | | SightY | 整数型 | | | BoxY1 | 小数型 | | | BoxH | 小数型 | | |
ViewW = 全_矩阵数据 [1 ] [4 ] × Pos.X + 全_矩阵数据 [2 ] [4 ] × Pos.Y + 全_矩阵数据 [3 ] [4 ] × Pos.Z + 全_矩阵数据 [4 ] [4 ]距离 = ViewW ÷ 10 - 4 如果真 (ViewW ≤ 0.2 )返回 (假)SightX = 进程信息.宽度 ÷ 2SightY = 进程信息.高度 ÷ 2 ViewW = 1 ÷ ViewW BoxX = SightX (全_矩阵数据 [1 ] [1 ] × Pos.x + 全_矩阵数据 [2 ] [1 ] × Pos.y + 全_矩阵数据 [3 ] [1 ] × Pos.z + 全_矩阵数据 [4 ] [1 ]) × ViewW × SightX BOXY = SightY (全_矩阵数据 [1 ] [2 ] × Pos.x + 全_矩阵数据 [2 ] [2 ] × Pos.y + 全_矩阵数据 [3 ] [2 ] × Pos.z + 全_矩阵数据 [4 ] [2 ]) × ViewW × SightY outPos.X = BoxX outPos.Y = BOXY 返回 (真)
|
世界转屏幕 | 逻辑型 | | |
传_矩阵数据 | 小数型 | | | | 传_对象坐标 | D3D坐标 | | | | 传_返回坐标 | 屏幕范围 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 局_ViewW | 小数型 | | | 局_BoxX | 整数型 | | | 局_BOXY | 整数型 | | | 局_BoxY1 | 整数型 | | | 局_BoxH | 整数型 | | | SightX | 整数型 | | | SightY | 整数型 | | |
局_ViewW = 传_矩阵数据 [1 ] [4 ] × 传_对象坐标.X + 传_矩阵数据 [2 ] [4 ] × 传_对象坐标.Z + 传_矩阵数据 [3 ] [4 ] × 传_对象坐标.Y + 传_矩阵数据 [4 ] [4 ]如果真 (局_ViewW ≤ 0.01 )返回 (假)局_ViewW = 1 ÷ 局_ViewWSightX = 进程信息.宽度 ÷ 2 SightY = 进程信息.高度 ÷ 2 局_BoxX = SightX (传_矩阵数据 [1 ] [1 ] × 传_对象坐标.X + 传_矩阵数据 [2 ] [1 ] × 传_对象坐标.Z + 传_矩阵数据 [3 ] [1 ] × 传_对象坐标.Y + 传_矩阵数据 [4 ] [1 ]) × 局_ViewW × SightX 局_BOXY = SightY (传_矩阵数据 [1 ] [2 ] × 传_对象坐标.X + 传_矩阵数据 [2 ] [2 ] (传_对象坐标.Z + 1.9 ) + 传_矩阵数据 [3 ] [2 ] × 传_对象坐标.Y + 传_矩阵数据 [4 ] [2 ]) × 局_ViewW × SightY 局_BoxY1 = SightY (传_矩阵数据 [1 ] [2 ] × 传_对象坐标.X + 传_矩阵数据 [2 ] [2 ] × 传_对象坐标.Z + 传_矩阵数据 [3 ] [2 ] × 传_对象坐标.Y + 传_矩阵数据 [4 ] [2 ]) × 局_ViewW × SightY 局_BoxH = 局_BoxY1 - 局_BOXY 传_返回坐标.X = 进程信息.左边 + 到整数 (局_BoxX - 局_BoxH ÷ 4 )传_返回坐标.Y = 进程信息.顶边 + 到整数 (局_BOXY )传_返回坐标.W = 到整数 (局_BoxH ÷ 2 ) 传_返回坐标.H = 到整数 (局_BoxH ) 返回 (真)
大佬们帮忙看看这是怎么个事 谢谢了
|