java - 在使用浮动原点时跟踪“真实”世界坐标
问题描述
在我的游戏中,我尝试使用“浮动原点”方法来防止模型因浮点不精确而变形。每个游戏循环,我都会检查我的玩家位置 (sqrt(dx * dx + dy * dy + dz * dz)) 是否与移动原点有一定距离(从 0、0、0 开始)距离原点一定距离,我将玩家移回 0、0、0 以及其他所有位置,然后将移动原点设置为玩家最后的位置。
但是,我很难跟踪玩家的“真实”位置,因为原点一直在移动,我应该改用网格系统吗?
你会推荐什么?
解决方案
这是一个很好的问题,因为单精度的速度和双精度的精度之间总是需要权衡取舍。
- 我使用双精度累加器跟踪班次,以便
随时可以使用双精度 Vector3d 进行准确
计算。 - 对于距离,比较距离的
平方会更快,并在大型系统中使用双精度值,因为如果您对地球比例或更大的单精度值进行平方,那么
它们很快就会溢出并且您会失去准确性。 - 这是一个演示,我使用单精度进行每帧的高速渲染,并在后端使用双精度来定期检查距离、接近度等。
推荐阅读
- node.js - 尝试代理时出错:
:3000/api/v1/metadata,在 aws 中反应应用程序主机 - javascript - 单击按钮时增加和减少输入值
- reactjs - 下一个 JS 应用程序创建给出 package.json 错误
- docker - 为 go-pdk 插件配置企业代理
- python - Python 正则表达式以 abc 开头,任何路径都有 @\defg
- ios - 水平滚动视图中的 NavigationLink 和菜单
- outlook - 在我的 Web 应用程序上集成 MS Teams 视频通话
- c# - Razor View ForEach 在不同的列中
- java - 无法在eclipse中运行Spring Boot项目
- css - 如何在 Semantic Ui React Navbar Menu 上制作阴影