业余写了个在线绘制几何图形工具,工具链接如下:
https://tinygltf.xyz/drawgeometry/
通过脚本代码在可视化窗口添加对应的点,线段,成像平面推到投影后坐标的计算:
点A通过O点连线投影到红色成像平面,相交于点A‘
A点坐标为(2,2,-4) OC长度等于相机的near值
A点投影到YZ平面相交于点D,所以AD长度等于A点的X坐标记为Px
D点再投影到XZ平面相交于点E,所以DE的长度等于A点的Y坐标记为Py
同理A‘投影到YZ平面相交于点B,B再投影到XZ平面相交于点C
这时候其实点A‘的X和Y的坐标即为线段A‘B和BC的长度
又因为三角形OA‘B 和 OAD相似三角形,所以A‘B / AD = OB / OD;
又因为三角形OCB和三角形OED相似得到OB / OD = OC / OE; 所以A‘B / AD = OC / OE; 又因为OC = -near, OE为A点Z坐标(记为Pz)
所以A‘B = (-near / pz ) * Px;
同理因为三角形OCB和三角形OED相似 BC / DE = OC / OE;
所以BC = (-near / pz ) * Py;
原文:https://www.cnblogs.com/zzatp/p/11279192.html