javascript - 从简单的光线投射渲染器中移除鱼眼效果
问题描述
我正在做一个自我导向的项目,该项目涉及从粒子中投射出一定数量的光线,用户可以在用户可以操纵的给定角度范围内移动这些光线。然后我渲染两件事:
A) 粒子在其世界中的图像,显示粒子本身、它所投射的射线以及射线碰撞的任何边界。
B) 2d 场景的渲染,其中边界(在 A 部分中由线条表示)应该被渲染为墙壁。
最后,我计划调整所述墙壁的亮度以及它们的高度以表示距离。墙越远,它应该越暗越小。就目前而言,距离与高度成正比,这导致了这种鱼眼效应。虽然我知道效果来自哪里,但我不想要它,而且我完全不知道如何删除它。我还没有实现与距离相关的亮度,但这没关系,因为我认为鱼眼效果在亮度下看起来会更自然。
我只使用 HTML 画布元素和 JS 来做所有事情,尽管这与问题并不完全相关。我的问题更多是关于消除鱼眼效应所涉及的数学。谁能提供有关我需要做些什么来消除鱼眼效应的见解?墙的高度仍应根据它们与粒子的距离而变化,但我希望墙的顶部边缘在渲染中是直的。
解决方案
推荐阅读
- flutter - 我得到 RangeError (index): Invalid value: Valid value range is empty: 0 在颤振谷歌地图中绘制多边形时出现异常
- android - 如何更改工具栏标高颜色?
- python - UnknownError:获取卷积算法失败
- jenkins - Jenkins 代理将 Windows 代理自行注册到现有的 Jenkins 主服务器
- spring-boot - Spring Boot - 在 Oauth2 授权成功期间触发了什么事件
- html - 时间验证(不时)
- laravel - 调用关系返回错误“最大执行时间为 60 秒”
- deep-learning - PyTorch 在第一个可用的 GPU (cuda:0) 上分配更多内存
- kotlin - 有没有办法让 NavigationView 占用更少的代码(Kotlin)
- nginx - nginx 代理服务器上的连接问题(可能是 socket.io 问题)