3D数学基础 简要归纳

3D数学基础 简要归纳

  • 计算机图形学第一准则:看上去是对的就是对的,简单记为近似原则
  • OpenGL是基于3D的,屏幕是2D的
  • OpenGL中使用的是列向量

左手系&右手系

  • OpenGL更多的是基于左手系
  • 线性代数更多是基于右手系
  • 3D图形学中常用坐标系
    • 世界坐标系:系统的绝对坐标系
    • 物体坐标系:物体产生关联
    • 摄像机坐标系/照相机坐标系
    • 惯性坐标系:物体坐标系转换为世界坐标系的 “半途”,目的是为了减少复杂度,是一个过渡
  • eg:以下情景基于什么坐标系?
    • 书在我的西边还是北边?==> 东南西北 -- 世界坐标系
    • 计算机在我的前面还是后面?==> 上下左右 -- 物体坐标系
    • 从一个房间移动到另一个房间 ==> 寻路型 -- 世界坐标系
    • 你能看见我的计算机吗? ==> 摄像机坐标系

向量

  • 存储 -- 数组

  • 图形学中:最多到4维

    • 2D:x、y
    • 3D:x、y、z
    • 4D:x、y、z、w
  • 零向量:没有方向,没有长度 即 模 = 0

  • 负向量 = (-1).向量, 将向量中的每个数都乘以 -1

    • 几何意义:得到一个与原向量大小相等,方向相反的向量
      负向量
  • 向量大小计算 即 模的计算 = 向量中所有数的平方和,再求根号


    向量模计算
    • 2D向量几何意义:直角三角形最长边的边长


      2D向量几何意义
  • 标量与向量的运算总结

    • 标量不能与向量进行加减运算
    • 标量与向量可以相乘,且满足交换律,不需要写乘号
    • 向量可以除以标量,即相当于向量乘以一个标量的倒数 即 v(向量)/k = v 乘以 1/k
    • 标量与向量的乘除 优先级高于 加减
    • 标量不能除以向量,且向量不能除以另一个向量
    • 乘法的特殊情况:负向量,即 向量 乘以 标量-1
    • 几何意义: 以因子(k 即 标量)缩放向量的长度,如果k<0, 向量的方向就会相反
      • 当k = -1时,向量仅翻转,得到大小相等,方向相反的向量
      • 当k = -2时,向量是先翻转,再放大,即-2可以看成(-1)乘以2
  • 向量标准化

    • 向量标准化 = 向量 / 向量的模,且向量 != 0
    • 标准化向量 :是向量长度 = 1,不等于单位向量,单位向量是主对角线数为1,其他全为0,单位向量是标准化向量
  • 向量的加减总结

    • 向量不能与标量或者维度不同的向量相加减
    • 向量加法满足交换律
    • 向量减法不满足交换律,只有当 a=b 时, a-b = b-a
    • 向量加法几何意义:平移向量
  • 向量的距离公式

    • 向量a与向量b的距离公式 = ||b-a|| = b与a对应位置数差的平方和,再求根号
      向量距离公式
    • 几何意义:两点间的距离
  • 向量的点乘总结

    向量点乘

    • 满足交换律,因为点乘结果是一个标量
    • 几何意义:两向量的夹角,即 a · b = |a||b|cosα ==> α = arccos(a·b / |a||b|),当a、b是单位向量时, α = arccos(a·b)
a·b 夹角α a和b
> 0 (0°,90°) 方向基本相同
= 0 90° 正交
<0 (90°,108°) 方向基本相反
  • 根据已知的向量v和向量n,且v2平行于n,v1垂直于n,求向量v2和向量v1


    image
    • v2平行于n: v2 = n(|v2| / |n|)
    • cosα = |v2| / |v| ==> |v2| = cosα·|v|
    • 将|v2|代入v2 ==> v2 = n(cosα·|v| / |n|)
    • 分子分母同时乘以|n| ==> v2 = n(cosα·|v|·|n| / |n|²)
    • 根据a · b = |a||b|cosα ==> v2 = n(v·n / |n|²),此时求得v2
    • 根据v2求v1,因为v1 + v2 = |v| ==> v1 = |v| - v2
    • 将v2公式代入v1 ==> v1 = |v| - n(v·n / |n|²)
  • 向量叉乘总结【常用】

    • 向量叉乘运算规则如下


      向量叉乘
    • 向量的叉乘优先级高于点乘
    • 几何意义
      • a × b = c,c垂直于a和b构成的平面,即c是该平面的法线,分别与a,b都垂直
      • a × b = c,即|c| = |a||b|cosα
    • 叉乘既不满足交换律,也不满足结合律
    • 任何向量与自己叉乘等于零向量,即 向量a × 向量a = 0


      image

矩阵

  • 矩阵在OpenGL中推荐使用一维数组存储

  • 方阵:行=列的矩阵

  • 向量可以当做1*n(行向量) / n*1(列向量)的矩阵使用

  • 标量和矩阵的乘法:将矩阵中的每个数都乘以标量

  • 矩阵与矩阵相乘,即 A₃*₂ * B₂*₄ = C₃*₄,A的列数必须匹配B的行数(记法图示如下)

    矩阵相乘

  • 矩阵乘法总结

    • 当S是单位矩阵且乘法有意义,任意矩阵M乘以方阵S,,那么得到的结果就是原矩阵,即MI = IM = M
    • 矩阵乘法不满足交换律,即AB != BA
    • 矩阵乘法满足结合律,前提是ABC的维数使其乘法有意义,即 (AB)C = A(BC)
    • 矩阵乘法也满足与标量/向量的结合律,即(kA)B = k(AB) = A(kB); (vA)B = v(AB)
    • 矩阵乘积的转置 相当于 先转置矩阵,然后以相反顺序相乘,即(AB)ᵀ = BᵀAᵀ
  • 向量与矩阵乘法总结

    • 行向量左乘矩阵,结果是行向量
    • 列向量右乘矩阵,结果实列向量
    • 结果向量中每个元素都是原向量与矩阵中单独行/列的点积
    • 矩阵-向量成法满足对向量加法的分配律,即 (v+w)M = vM + wM,其中v,w是向量,M是矩阵
  • 基向量:单位向量

    • p、q、r 定义分别指向+x,+y,+z⽅方向的单位向量量,v = xp+yq+zr


      基向量
    • 矩阵M对应到坐标轴的单位向量如图所示


      image
- 矩阵的每一行都能解释为转换后的基向量
  • 矩阵的几何意义
    • 方阵的行能被解释为坐标的基向量
    • 为了将向量从原坐标变换到新坐标,需要用向量乘以一个矩阵
    • 线性变换:从原坐标系到基向量定义的新坐标系的变化
    • 零向量乘以任何矩阵仍是零向量

2D下的旋转矩阵公式推演

核心动画CoreAnimation中苹果官方文档有提到

  • 2D下的旋转时围绕原心旋转的

  • 三角函数表

三角函数/角度 0(0°) π/2(90°) π(180°) 3π/2(270°) 2π(360°)
sinα 0 1 0 -1 0
cosα 1 0 -1 0 1
tanα 0 不存在 0 不存在 0
cotα 不存在 0 不存在 0 不存在

旋转时向量的变化与三角函数值的关系

  • 旋转变化如图所示


    2D-围绕原点旋转变化过程
  • 向量与三角函数值的关系


    基向量与三角函数值关系

3D下的旋转矩阵公式推演

  • 3D下的旋转时围绕某个轴旋转的,当围绕哪个轴,哪个轴的矩阵中所对应的行和列就用基向量表示

    • 围绕x轴旋转,x轴不会发生变化,所以x对应的矩阵行用基向量表示,图示如下

    • q向量的值变化过程为: +y(起始) ==> +z ==> -y ==> -z
      1 0 0
      0 0 1
      0 1 0
      0 0 -1
      0 -1 0

    • r向量的值变化过程:+z(起始) ==> -y ==> -z ==> +y
      0 0 1
      0 -1 0
      0 0 -1
      0 1 0

    p、r变化过程图示为


    3D-围绕x旋转变化过程

    与三角函数的关系如图所示


    image
  • 围绕Y、围绕Z与围绕x类似

    • 围绕Y轴时R的矩阵:010表示的是基向量,围绕谁懂,谁就必须由基向量表示
      围绕Y旋转
    • 围绕Y轴时R的矩阵:001表示的是基向量


      围绕z旋转

缩放与平移矩阵公式推演

  • 2D缩放:基向量p和q分别乘以标量k
  • 平移:在哪个轴平移,将这个轴的对应的值与平移距离相加
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,482评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,377评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,762评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,273评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,289评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,046评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,351评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,988评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,476评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,948评论 2 324
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,064评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,712评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,261评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,264评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,486评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,511评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,802评论 2 345