java - 了解简单 Java 程序的透视投影
问题描述
所以我很难理解透视投影的精确计算——我的老师在课堂上讲课,没有教科书可供我参考。我正在用Java创建一个简单的程序,用于显示一个立方体(或实际上任何多边形对象),其中视点位于(6、8、7.5),视轴Ze指向WCS的原点,Xe轴位于Z = 7.5 平面。据说屏幕为30x30cm,观看距离为60cm。立方体如下:
Xw:-1、1、1、1、-1、1、1、-1
Yw:1、1、-1、-1、1、1、-1、-1
Zw:-1、-1、-1、-1、1、1、1、1
到目前为止,我已经能够模拟 3d 几何变换,并且正在使用 bresenham 算法来扫描转换线。然而,该项目的任务是应用我真的没有真正理解的透视投影。
有人向我描述过 [Xe Ye Ze 1] = [Xw Yw Zw 1][V] 然后 [Xc Yc Zc 1] = [Xe Ye Ze 1][N] 或者更确切地说是 [Xc Yc Zc 1] = [Xw Yw Zw 1] [[V][N]],然后用 Xs = (Xc/Zc)+Vsx + Vcx 和 Ys=(Yc/Zc)VSy+Vcy 将点映射到屏幕上。然而,我的主要问题是在给定项目条款的情况下构建转换矩阵 V。
任何帮助将不胜感激
解决方案
推荐阅读
- angularjs - 自定义指令抛出 -- 错误:$compile:ctreq Missing Required Controller
- node.js - RPi3 / Ubuntu Mate 16.04 上的 Node-Red-Dashboard UI_Gauge 不会随有效负载而变化
- azure - 是否有任何 azure API App cmdlet?
- acumatica - 将默认值从一个网格设置为同一屏幕中的另一个网格
- ios - 在不同的视图控制器中打开 webkit 视图
- java - 单元测试时未找到自定义注释
- python - 如何在直接索引列表时使用for循环和upper()将列表中的所有元素转换为大写?
- javascript - 如何在 JQuery 中为每个循环制作可变延迟/睡眠
- reactjs - 将语言添加到 Handsontable 反应
- javascript - 更新文档时的 pouchDB query() 错误