用户:
Iysthingraphics查看:1 回复:2 评论:1 创建时间:2021-12-04T12:10:44
(文接上篇)
首先,让单个点旋转起来(绕着xyz都等于0的原点旋转,且仅喵面旋转),你需要让X'=Xsin(θ)(水平旋转,看起来只是在做简谐运动)或Y'=Ysin(θ)(垂直旋转,同上)抑或是X'=Xsin(θ),Y'=Ycos(θ)(就是个圆)。啊?你不是说3D?怎么只有2D??别急,还早着呢。我们可以说这三种旋转都仅仅是二维平面上的旋转,但是我们要的是那种全方位三百六十度的三维旋转,有XYZ三个轴而不是两个轴。首先,一个点,他有XYZ三个空间维度,好了,开始表演。先从X开始下手(从这里开始连我自己都摸不着头脑了有错误请帮忙修正谢谢了)跟上次一样,X'=Xsin(θx)然后是第二个维度,喵,上百度百科公式原理会解释的,挖个坑,等我高三再见!百度百科上的投影步骤分两步,我们要用的是透视投影,很复杂就对了(我实在不懂呀QwQ)第一步,求出变换后的三维坐标,第二步,用平面投影的方式将三维点投影到二维空间
一:Ax,y,z即被投影三维空间中的一点,Cx,y,z为观测的位置,θx,y,z为观测点的旋转角度,Ex,y,z为“观测者相对显示平面的位置”(百度百科原文,看不懂,目测是类似于FOV的参数),Bx,y为该点在二维平面上的透视投影
这里有矩阵和非矩阵两种方法,矩阵表示过于的难所以上公式
Dx = cos(θy)(sin(θz)(Ay-Cy)+cos(θz)(Az-Cz))-sin(θy)(Az-Cz);Dy = sin(θx)(cos(θy)(Az-Cz)+sin(θy)(sin(θz)(Ay-Cy)+cos(θz)(Ax-Cx)))+cos(θx)(cos(θz)(Ay-Cy)-sin(θz)(Ax-Cx));Dz = cos(θx)(cos(θy)(Az-Cz)+sin(θy)(sin(θz)(Ay-Cy)+cos(θz)(Ax-Cx)))-sin(θx)(cos(θz)(Ay-Cy)-sin(θz)(Ax-Cx));Bx = (Dx-Ex)(Ez/Dz);By = (Dy-Ey)(Ez/Dz)
(QwQ真的是没办法才上公式了啦)
ParseYPasyhttps://shequ.codemao.cn/community/429563 可以帮忙查下有没有错,我很担心sin,cos,asin的取值会发生错误(尽管我采用的是单位圆)
点赞0
评论