世界坐标系到相机坐标系的变换

世界坐标系到相机坐标的变化是个不容易理解的地方。在学习OpenGL的过程中也经常遇到不理解转换矩阵意义的地方。这篇博文讲的还是不错的,遗憾的是,不知道最终来源是哪里。在此记录一下,以便查阅。

世界坐标系到相机坐标系的变换

glm:LookAt 函数的解释

已知,在XYZ坐标系下,有点
P(P_x,P_y,P_z)

。又知道一组新的坐标X'Y'Z',其基向量在 XYZ 坐标系下的表示分别为:
\vec{u}=(u_x,u_y,u_z), \vec{v}=(v_x,v_y,v_z), \vec{w}=(w_x,w_y,w_z)
\vec{u}=(u_x,u_y,u_z), \vec{v}=(v_x,v_y,v_z), \vec{w}=(w_x,w_y,w_z)
(注意,这些都是单位向量,这很重要)。令XYZ坐标系的原点为
\vec{O}=(O_x,O_y,O_z)
\vec{O}=(O_x,O_y,O_z)
,X'Y'Z'坐标系的原点为
\vec{O'}=(O'_x,O'_y,O'_z)
\vec{O'}=(O'_x,O'_y,O'_z)

问题是,点
P(P_x,P_y,P_z)

在 X'Y'Z' 坐标系中的坐标
P'=(P'_x,P'_y,P'_z)
是多少?

解: 首先,在 XYZ 坐标系下,将 X'Y'Z' 的基向量、点 P 同时平移,使
得 X'Y'Z' 的原点 O' 和 点 O 重合。其结果如图所示。

两个坐标系

达到这一目的的平移矩阵为:

\begin{pmatrix} 1 & 0 & 0 & -O'_x\ 0 & 1 & 0 & -O'_y\ 0 & 0 & 1 & -O'_z\ 0 & 0 & 0 & 1 \end{pmatrix}
\begin{pmatrix} 1 & 0 & 0 & -O'_x\ 0 & 1 & 0 & -O'_y\ 0 & 0 & 1 & -O'_z\ 0 & 0 & 0 & 1 \end{pmatrix}

值得注意的是,这样做之后,点
P(P_x,P_y,P_z)

在 X'Y'Z' 坐标系中的坐

P'=(P'_x,P'_y,P'_z)
并没有改变。因为,我们对其基向量、点 P 同时进行了平移。之后,我们需要一个旋转矩阵,来求得
P'=(P'_x,P'_y,P'_z)

关键就在于下面的观察:由图1可以看到,
P'_y=\vec{v}*\vec{OP}
P'_y=\vec{v}*\vec{OP}

,其中
\vec{v}=(v_x,v_y,v_z),\vec{OP}=(P_x,P_y,P_z)
\vec{v}=(v_x,v_y,v_z),\vec{OP}=(P_x,P_y,P_z)
,所以 Py′ 即可求得。同理,可求得 Px′ , Pz′。

写成矩阵形式:

\begin{pmatrix} P'_x\ P'_y\ P'_z \end{pmatrix} = \begin{pmatrix} \vec{u}\ \vec{v}\ \vec{w} \end{pmatrix} * \vec{OP} = \begin{pmatrix} u_x & u_y & u_z\ v_x & v_y & v_z\ w_x & w_y & w_z \end{pmatrix} * \begin{pmatrix} P_x\ P_y\ P_z \end{pmatrix}
\begin{pmatrix} P'_x\ P'_y\ P'_z \end{pmatrix} = \begin{pmatrix} \vec{u}\ \vec{v}\ \vec{w} \end{pmatrix} * \vec{OP} = \begin{pmatrix} u_x & u_y & u_z\ v_x & v_y & v_z\ w_x & w_y & w_z \end{pmatrix} * \begin{pmatrix} P_x\ P_y\ P_z \end{pmatrix}

于是,R 的齐次坐标的形式是:

R = \begin{pmatrix} 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{pmatrix}
R = \begin{pmatrix} 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{pmatrix}

综上,对于一个点
P(P_x,P_y,P_z)
P(P_x,P_y,P_z)

,它在以
\vec{O'}=(O'_x,O'_y,O'_z)
为原点的
X'Y'Z' 坐标系下的坐标
P'=(P'_x,P'_y,P'_z)
P'=(P'_x,P'_y,P'_z)

为:

\begin{pmatrix} P'_x\ P'_y\ P'_z\ 1 \end{pmatrix} = \begin{pmatrix} 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{pmatrix} * \begin{pmatrix} 1 & 0 & 0 & -O'_x\ 0 & 1 & 0 & -O'_y\ 0 & 0 & 1 & -O_z\ 0 & 0 & 0 & 1 \end{pmatrix} * \begin{pmatrix} P_x\ P_y\ P_z\ 1 \end{pmatrix}
\begin{pmatrix} P'_x\ P'_y\ P'_z\ 1 \end{pmatrix} = \begin{pmatrix} 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{pmatrix} * \begin{pmatrix} 1 & 0 & 0 & -O'_x\ 0 & 1 & 0 & -O'_y\ 0 & 0 & 1 & -O_z\ 0 & 0 & 0 & 1 \end{pmatrix} * \begin{pmatrix} P_x\ P_y\ P_z\ 1 \end{pmatrix}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容

  • 1 前言 OpenGL渲染3D模型离不开空间几何的数学理论知识,而本篇文章的目的就是对空间几何进行简单的介绍,并对...
    RichardJieChen阅读 6,873评论 1 11
  • 目录 一、分析拉伸的原因 二、准备知识,三维变换 三、OpenGL 下的三维变换 四、修复拉伸问题 一、分析拉伸的...
    半纸渊阅读 2,169评论 3 0
  • 3D物体从三维坐标映射到2D屏幕上,要经过一系列的坐标系变换,这些坐标系如下: model物体本身(local)的...
    白痴毛阅读 18,960评论 7 35
  • 变换(Transformations) 我们可以尝试着在每一帧改变物体的顶点并且重设缓冲区从而使他们移动,但这太繁...
    IceMJ阅读 4,058评论 0 1
  • 寒塘渡鹤影,冷月葬花魂 这两句诗,是一年中秋爽朗活泼的湘云与多愁善感的黛玉在凸碧堂和凹晶馆的对诗,思虑不同,心思各...
    白雪飘零阅读 479评论 0 0