python - 如何创建 2D 相机观察 2D 世界的视觉
问题描述
在 3D 世界中,向外看的相机将创建它所看到的 2D 表示,也就是图片。查看 3D 立方体会生成以下 2D 图像:
但是,在 2D 世界中,向外看的相机会创建一条 1D 像素线,代表它所看到的内容。
此场景中的相机:
想想相机向外看。它将无法看到所有粉红色的形状,因为它的大部分被红色的形状挡住了。它只会看到通畅的部分。此外,更远的物体看起来更小。
如何创建 2D 相机的视图,查看 2D 世界,创建 1D 图像?
我正在寻找一种方法,最好是在 Python 中,来实现这一点。我正在尝试对我正在模拟的一些 2D 生物执行此操作。我希望他们的输入是代表他们对世界的看法的一维数组。
解决方案
在生物上选择一个焦点。在它周围画一个圆圈。为图像分辨率中的每个像素细分圆,然后将光线从焦点投射到圆点并投射到世界中。找到该射线与世界对象之间的交点。获取最接近的颜色以在该像素处设置图像中的颜色。对每个像素重复。
这提供了一个 360 度的透视图,这可能会简化模拟生物的事情。如果您想要更具方向性的视图,只需使用圆弧而不是圆。45度似乎是合理的。
推荐阅读
- html - CSS改变样式而不重写
- ios - 子视图控制器的 viewDidLoad 在父视图控制器之前被调用?
- svg - 为什么蜡染无法使用 OutputStream 保存 .svg 文件?
- node.js - LOADPAGE - 解析 JSON 请求失败,状态 200
- angularjs - AngularJs 1.x 不使用 ng-show 或 ng-if 更新元素的可见性
- redis - 为什么 Redis 会允许客户端关闭服务器?
- jquery - 如何将弃用的 jquery bind() 转换为正确的 jquery on()
- mysql - 你如何有条件地舍入浮点数?
- php - local.ERROR: BadMethodCallException: 方法 [validateTextRequired] 不存在
- node.js - 混合时节点模块安装导致错误