美文网首页
2022-10-31 通过lookAt矩阵的推导理解坐标

2022-10-31 通过lookAt矩阵的推导理解坐标

作者: MrSwilder | 来源:发表于2022-10-31 22:51 被阅读0次

一、坐标变换和基变换

:基的概念源于线性代数,一般指向量空间的基,基就是坐标轴的单位向量
坐标:在线性代数中,坐标的全称为:向量关于基的坐标。

1.1、坐标变换与左乘

1.1.1 坐标变换

  • 坐标变换就把一个点(或一个向量)在当前坐标系下的坐标转换为另一个坐标系下的坐标
    上面那点就是说,同一个点(或向量)在不同坐标系下的坐标分别是什么?
  • 注意,坐标变换,是左乘的。过渡矩阵A是乘在左边的。

1.1.2 左乘

如果一个矩阵总是以固定的坐标系运动,我们便可以用一个坐标系下面的“描述”来描述这样一个变化。

注意,在每一个旋转矩阵里面这个“描述”都是会基于一个基座标系,例如:


image.png

上述矩阵描述的是,整个矩阵绕着z轴旋转

现有两个矩阵:


image.png
image.png

其中,A是一个绕着Z轴的旋转矩阵,B是一个平移变化的矩阵。我们可以注意到,这个矩阵里面的“数字”依然是围绕着一个基坐标描述的(在这里我们不妨把它称作是“大地坐标”),也就是以大地为基座标。


image.png
如果我们每次采取的变化,都是围绕着基座标的话,我们便可以用“左乘”,利用他们的变化性质进行变化:比如说,我们想要先进行一次旋转变化A,然后再进行一次平移变化B,我们应该怎么做呢?

我们可以利用的性质是:我们在进行坐标系的变化过程中,总是采用的是左乘的方法,所以我们可以推知,我们想要变化的向量总是会先“接触”其左边的变化矩阵,所以在及坐标系下面,我们采用的变化就是 的矩阵描述总变换

1.2 基变换与右乘

1.2.1 基变换

  • 基变换就是把一组基变到另一组基。
  • 而用在导航方面来讲,即参考系发生了变化。
  • 注意,基变换是右乘的,即过渡矩阵A被乘在右边。

1.2.2 右乘

要是我们想先进行一次旋转变换然后再根据这个旋转变化后的新坐标系,再做一次平移变换我们应该怎么做呢?

这时候我们就会发现,单纯地用左乘的方法似乎达不到效果了。因为在第一个变化生效的时候,第二个变化的基座标系已经发生了改变,它是基于第二的坐标系再变化。所以我们在这里引用了一个右乘的概念,

可以这样理解,如果我们以大地为基座标,尽管平移变换是在旋转变化之后发生的,但是平移变换还是要受旋转变换的影响的(注意此时我们的视角是在“大地”)。

但是,如果我们把目光放在了旋转这个新的坐标下面,我们能关注到的,就是 这个平移矩阵仅仅做了一个平移的变换。因为此时,我们把旋转矩阵作为基矩阵。

但是,我们所需要的答案是把大地作为基矩阵下的答案,所以还是得把旋转矩阵在大地坐标下面描述出来。

这个计算顺序的变化,就是我们所引入的“右乘”概念。*

1.3、总结:

【简单理解】:

  • 坐标变换是坐标系未动,点相对于当前坐标系进行了变换,要矩阵左乘;
  • 基变换是点相对于当前坐标系未动,坐标系进行了变换,要矩阵右乘
  • 可以看到基变换与坐标变换有一个‘相反’的关系。 这种关系叫做’反变(contravariant,也称逆变)

二、LookAt矩阵推导

lookAt函数的矩阵形式为

/**
 * Multiply the viewing matrix from the right.
 * @param eyeX, eyeY, eyeZ The position of the eye point.
 * @param centerX, centerY, centerZ The position of the reference point.
 * @param upX, upY, upZ The direction of the up vector.
 * @return this
 */
Matrix4.prototype.lookAt = function (
    eyeX,
    eyeY,
    eyeZ,
    centerX,
    centerY,
    centerZ,
    upX,
    upY,
    upZ
) 

其中眼睛位置为eye,上方向为up,目标点为center,则视图空间三个基u,v,w为

image.png

2.1 从点变换角度

设世界坐标为(x,y,z),相机空间坐标为(x1,y1,z1),变换矩阵为View
\left( \begin{array}{c} x1\\ y1\\ z1\\ \end{array} \right) =View*\left( \begin{array}{c} x\\ y\\ z\\ \end{array} \right)

此时对应点并不好找,u,v,w在世界坐标中的位置并不好找

2.2 从基变换角度

点从世界空间变换到相机空间等价于相机空间坐标轴(即基)变换到世界空间,可分为两步 ,平移到原点(T)和绕原点旋转到与世界空间基底重合(R)
即View=RT
首先平移矩阵
T=\left[ \begin{matrix} 1& 0& 0& -eye.x\\ 0& 1& 0& -eye.y\\ 0& 0& 1& -eye.z\\ 0& 0& 0& 1\\ \end{matrix} \right]

旋转矩阵
此时基底从u,v,w变为(1,0,0),(0,1,0),(0,0,1)此时对应关系并不好写,但是取逆变换就比较好写,即
R^{-1}=\left[ \begin{matrix} a& b& c& 0\\ d& e& f& 0\\ g& h& i& 0\\ j& k& l& 1\\ \end{matrix} \right] \times \left[ \begin{matrix} 1& 0& 0& 0\\ 0& 1& 0& 0\\ 0& 0& 1& 0\\ 0& 0& 0& 1\\ \end{matrix} \right] =\left[ \begin{matrix} u.x& v.x& w.x& 0\\ u.v& v.y& w.y& 0\\ u.w& v.z& w.z& 0\\ 0& 0& 0& 1\\ \end{matrix} \right]
则R
R=\left[ \begin{matrix} u.x& v.x& w.x& 0\\ u.v& v.y& w.y& 0\\ u.w& v.z& w.z& 0\\ 0& 0& 0& 1\\ \end{matrix} \right] ^{-1}=\left[ \begin{matrix} u.x& v.x& w.x& 0\\ u.v& v.y& w.y& 0\\ u.w& v.z& w.z& 0\\ 0& 0& 0& 1\\ \end{matrix} \right] ^T=\left[ \begin{matrix} u.x& u.y& u.z& 0\\ v.x& v.y& v.z& 0\\ w.x& w.y& w.z& 0\\ 0& 0& 0& 1\\ \end{matrix} \right]

View=R*T=\left[ \begin{matrix} u.x& u.y& u.z& 0\\ v.x& v.y& v.z& 0\\ w.x& w.y& w.z& 0\\ 0& 0& 0& 1\\ \end{matrix} \right] *\left[ \begin{matrix} 1& 0& 0& -eye.x\\ 0& 1& 0& -eye.y\\ 0& 0& 1& -eye.z\\ 0& 0& 0& 1\\ \end{matrix} \right] =\left[ \begin{matrix} u.x& u.y& u.z& -u*eye.x\\ v.x& v.y& v.z& -v*eye.y\\ w.x& w.y& w.z& -w*eye.z\\ 0& 0& 0& 1\\ \end{matrix} \right]

相关文章

  • 2022-10-31 通过lookAt矩阵的推导理解坐标

    一、坐标变换和基变换 基:基的概念源于线性代数,一般指向量空间的基,基就是坐标轴的单位向量坐标:在线性代数中,坐标...

  • 关于LookAt的总结

    LookAt矩阵是一种特殊类型的view矩阵。LookAt: a special type of view mat...

  • 3D数学

    1, 向量 2, 矩阵 3, 欧拉角 4, 四元数 5, 坐标系变换 6, 齐次坐标与透视变换的推导 齐次坐标 向...

  • QT+OpenGL四之相机的移动和旋转

    相机移动主要针对于lookAt()矩阵,lookAt需要三个参数1.相机的位置2.相机看向的位置3.相机的纵轴向量...

  • 2017-09-26

    单纯通过推导,就能够得出对称矩阵的特征向量正交——数学,确实神奇。

  • CG中的数学--几何部分(Geometry)

    1. 矩阵(Matrix) 1.1 矩阵和笛卡尔坐标系之间的关系 理解矩阵的关键点在于,我们要知道,矩阵的行就代表...

  • 相机标定知识和深度数据映射彩色数据

    旋转矩阵坐标系转换一坐标系转换二Kinect 深度转彩色公式推导刚体变换Kinect1代正确映射映射详解用自己的k...

  • OpenGL矩阵堆栈处理

    为什么要使用矩阵堆栈? OpenGL在进行渲染的时候是通过模型视图矩阵和投影矩阵运算得到最终显示的坐标。 模型矩阵...

  • 度量张量、对偶坐标系、指标升降

    矩阵乘法(矩阵 * 矩阵,矩阵 * 向量) M * a = b有两种理解方式, 第一种 将M视为一个全新独立坐标系...

  • 坐标系旋转矩阵推导过程

    两角和(差)公式 推导 旋转变换一般是按照某个圆心点,以一定半径 r 旋转一定的角度α,为了简单起见我们给出下面的...

网友评论

      本文标题:2022-10-31 通过lookAt矩阵的推导理解坐标

      本文链接:https://www.haomeiwen.com/subject/mncltdtx.html