计算机图形学(1)-向量-坐标系

1.向量

一个二维向量可以写成任意两个不平行的非零向量的组合,这两个向量的这种性质也叫线性独立性(linear independence)。两个具有线性独立性的基向量(basis vectors)组成一个二维基(2D basis).。如下向量c可以是两个基向量a和b的组合( a_{c}b_{c}是唯一的):

c = a_{c}a+b_{c}b

向量x和向量y正交且是单位向量,可以用x和y表示笛卡尔坐标系中的任意向量。如下

a = x_{a}x+y_{a}y

a的笛卡尔坐标是(x_{a},y_{a}),a的长度是:

\left \| a \right \|=\sqrt{x_{a}^{2}+y_{a}^{2}}

列矩阵:

a = \begin{bmatrix} x_{a}\\y_{a} \end{bmatrix}

行矩阵

a^{T} = \left [ x_{a}\,\: y_{a} \right ]

1.1.点乘

在图形学中最常见的用途是计算两个向量之间的夹角\phi

a\cdot b = \left \| a \right \|\, \left \| b \right \|\cos \phi

也可以用来计算一个向量到另一个向量的投影:

a\rightarrow b = \left \| a \right \|\cos \phi =\frac{a\cdot b}{\left \| b \right \|}

笛卡尔坐标系中:

x\cdot x=y\cdot y=1,x\cdot y=0

可以推导出向量a,b的点基

a\cdot b=(x_{a}x+y_{a}y)\cdot (x_{b}x+y_{b}y) = x_{a}x_{b}(x\cdot x)+x_{a}y_{b}(x\cdot y)+x_{b}y_{a}(y\cdot x)+y_{a}y_{b}(y\cdot y)

      =x_{a}x_{b}+y_{a}y_{b}

1.2.叉乘

通常只用于三维向量,叉乘返回的向量与两个叉乘的向量垂直。

\left \| a\times b \right \|=\left \| a \right \|\left \| b \right \|\sin \phi

\left \| a\times b \right \|等于向量a,b组成的平行四边形的面积。

笛卡尔坐标系:

a\times b=(y_{a}z_{b}-z_{a}y_{b},z_{a}x_{b}-x_{a}z_{b},x_{a}y_{b}-y_{a}x_{b})

2.正交基(orthonormal basis)

坐标系的管理是所有图形程序的核心任务,坐标系的关键就是正交基。

二维正交基:当任意的两个二维向量u,v,两个向量正交且两个向量都是单位长度,那么我们说u,v的集合构成了一个标准的正交基。如下:

\left \| u \right \| = \left \| v \right \| = 1 \, \mathbf{and}\, u\cdot v = 0

三维正交基:任意三个三维向量u,v,w,三个向量两两正交且都是单位长度,那么u,v,w的三维向量集合构成了一个标准的三维正交基。如下:

\left \| u \right \| = \left \| v \right \|=\left \| w \right \| = 1\, \mathbf{and}\, u\cdot v = v\cdot w = w\cdot u = 0

右手法则

w = u\times v

其他情况为左手法则

笛卡尔坐标系(x,y,z)也叫主坐标系,原点o和标准正交基(x,y,z)。也叫全局坐标系或世界坐标系,原点o和基向量不会被显示存储,全局模型通常会存储在全局坐标系中。所有其他向量的位置都存储在与全局坐标系相关的坐标中,这样的系统成为参考系或坐标系,与特定物体相关联的坐标系也叫局部坐标系。

局部坐标存储在主坐标系中:

u(x_{u},y_{u},z_{u})\rightarrow u = x_{u}x+y_{u}y+z_{u}z

位置隐式的包含从全局坐标系到局部坐标系的偏移量:

p = o+x_{p}x+y_{p}y+z_{p}z

p的坐标是(x_{p},y_{p},z_{p} )

例:通过点乘获取笛卡尔坐标系中向量b的u,v,w坐标

b =u_{b}u+v_{b}v+w_{b}w

\Rightarrow u\cdot b=u_{b}(u\cdot u)+v_{b}(u\cdot v)+w_{b}(u\cdot w)=u_{b}

\Rightarrow u_{b}=u\cdot b,v_{b}=v\cdot b,w_{b} = w\cdot b

3.单向量构建基

给定一个向量a,获取一组正交的u,v,w向量,w方向与a相同。

w成为a方向的单位向量:

w\frac{a}{\left \| a \right \|}

随机选一条不与w共线的向量t(当t与w共线时分母消失,当t几乎与w共线时精度就很低),使用叉乘构件一个垂直于w的单位向量u:

u = \frac{t\times w}{\left \| t\times w \right \|}

找到与w完全不同的向量的一个简单的方法是,t=w,然后将t坐标中最小的一个值改成1,例如:

w=\left ( \frac{1}{\sqrt{2}},-\frac{1}{\sqrt{2}} ,0\right ); t = \left ( \frac{1}{\sqrt{2}},-\frac{1}{\sqrt{2}} ,1\right)

4.两个向量构件基

给定两个正交的向量a,b:

w=\frac{a}{\left \| a \right \|}

u=\frac{b\times w }{\left \| b\times w \right \|}

v=w\times u

a,b两个向量不正交时,w向量可以按a构建,v向量则是与w垂直且最接近b的向量。

a,b不能共线。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值