2024-07-30 12:43:44
浏览数 (17)
一、向量和矩阵的基本运算 1、简单变换 boldsymbol{x} =begin{bmatrix}x\yend{bmatrix} 1. 平移变换 begin{bmatrix}x'\y'end{bmatrix} = begin{bmatrix}x\yend{bmatrix} begin{bmatrix}a\bend{bmatrix}
将向量
begin{bmatrix}a\bend{bmatrix} 加到
begin{bmatrix}x\yend{bmatrix} 上,得到平移后的新向量
begin{bmatrix}x'\y'end{bmatrix} = begin{bmatrix}x a\y bend{bmatrix} 。其中
a 和
b 分别为x方向和y方向的平移量 。
2. 缩放变换 begin{bmatrix}x'\y'end{bmatrix} = begin{bmatrix}s_x & 0\0 & s_yend{bmatrix}begin{bmatrix}x\yend{bmatrix} = begin{bmatrix}s_xx\s_yyend{bmatrix}
通过缩放矩阵
begin{bmatrix}s_x & 0\0 & s_yend{bmatrix} 乘以
begin{bmatrix}x\yend{bmatrix} ,可以得到缩放后的向量
begin{bmatrix}x'\y'end{bmatrix} = begin{bmatrix}s_xx\s_yyend{bmatrix} 。其中
s_x 和
s_y 分别为x方向和y方向的缩放比例 。
3. 旋转变换 begin{bmatrix}x'\y'end{bmatrix} = begin{bmatrix}costheta & -sintheta\sintheta & costhetaend{bmatrix}begin{bmatrix}x\yend{bmatrix}
通过旋转矩阵
begin{bmatrix}costheta & -sintheta\sintheta & costhetaend{bmatrix} 乘以
begin{bmatrix}x\yend{bmatrix} ,可以得到绕原点逆时针旋转
theta 角度 后的向量
begin{bmatrix}x'\y'end{bmatrix} 。
4. 一般线性变换 begin{bmatrix}x'\y'end{bmatrix} = begin{bmatrix}a & b\c & dend{bmatrix}begin{bmatrix}x\yend{bmatrix} = begin{bmatrix}ax by\cx dyend{bmatrix}
通过一个2x2变换矩阵
begin{bmatrix}a & b\c & dend{bmatrix} 乘以
begin{bmatrix}x\yend{bmatrix} ,可以得到一个新的变换后向量
begin{bmatrix}x'\y'end{bmatrix} = begin{bmatrix}ax by\cx dyend{bmatrix} ,这个变换矩阵可以表示缩放、旋转、错切等线性变换的组合 。
2、齐次坐标 0. 齐次坐标表示 在使用齐次坐标表示时,我们将n维欧几里得空间中的点
(x_1, x_2, dots, x_n) 表示为
(n 1) 维的齐次坐标形式
(x_1, x_2, dots, x_n, 1) ,在原始坐标的基础上添加一个1作为最后一个分量。
begin{bmatrix}x\y\1end{bmatrix} 表示,即在笛卡尔坐标
begin{bmatrix}x\yend{bmatrix} 的基础上添加一个1作为最后一个分量;
begin{bmatrix}x\y\z\1end{bmatrix} 表示,即在笛卡尔坐标
begin{bmatrix}x\y\zend{bmatrix} 的基础上添加一个1作为最后一个分量。
1. 2D点的齐次坐标变换 begin{bmatrix}a & b & c\d & e & f\0 & 0 & 1end{bmatrix} begin{bmatrix}x'\y'\1end{bmatrix} = begin{bmatrix}a & b & c\d & e & f\0 & 0 & 1end{bmatrix}begin{bmatrix}x\y\1end{bmatrix}=begin{bmatrix}ax by c\dx ey f\1end{bmatrix} 该变换矩阵包含了三个部分:
begin{bmatrix}c\fend{bmatrix} begin{bmatrix}a & b\d & eend{bmatrix} 构成的2x2子矩阵)
缩放分量(a, b, d, e的大小) 当这些元素的值大于1时,会放大相应方向的坐标;小于1时,会缩小。 2. 投影空间 (x, y, w) 引入一个三维投影空间,由
x 、
y 和
w 三个坐标构成,用
begin{bmatrix}x\y\wend{bmatrix} 表示。
其中
w=0 表示无穷远的点,即所有投影线的汇聚点所在位置。
左图展示了透视投影 (Perspective projection)的情况,所有投影线从场景中的点汇聚于一个无穷远点,这种投影方式可以提供深度信息和真实的景深感。 begin{bmatrix}x'\y'\w'end{bmatrix} = begin{bmatrix}a&b&c\d&e&f\g&h&iend{bmatrix}begin{bmatrix}x\y\wend{bmatrix} 右图展示了正交投影 (Orthographic projection)的情况,投影线都是平行的,没有汇聚点,无法获得真实的景深感,但可以保持投影后物体的形状不变形。 正交投影常用于工程制图等需要保持形状的场合,表达式为:
begin{bmatrix}x'\y'\w'end{bmatrix} = begin{bmatrix}a&b&0\c&d&0\0&0&1end{bmatrix}begin{bmatrix}x\y\wend{bmatrix} 这种投影空间和投影变换在计算机图形学中被广泛使用,用于将三维物体投影到二维平面上进行显示。
3. 2D直线的齐次坐标表示 a. 直线的参数方程表示 l = (a, b, c)\xcdot l = ax by c = 0 其中
(a, b, c) 是直线的系数,任意一点
(x, y) 代入方程,结果为0,则该点位于该直线上。
b. 直线的法向量和原点距离表示 l = (n_x, n_y, d) = (vec{n}, d) quad text{with} |vec{n}| = 1 其中
vec{n} = (n_x, n_y) = (costheta, sintheta) 表示直线的法向量,即垂直于直线方向的单位向量,
d 表示直线到原点的有符号距离。
这种表示直观地描述了直线的性质:
vec{n} 给出了直线的方向
d 给出了直线到原点的距离,取正负号表示直线在原点的两侧
法向量和原点距离表示对于直线的各种几何运算都很有用,例如求直线交点、判断点和直线的位置关系等。通过矩阵变换,可以很自然地对直线进行旋转、平移等操作。
4. 叉积算子 两条直线的表示:
给定两条直线 tilde{l}_1 和
tilde{l}_2 的齐次坐标表示。
交点的计算:
两条直线 tilde{l}_1 和
tilde{l}_2 的交点
tilde{x} 可以通过它们的外积(叉积)求得:
tilde{x} = tilde{l}_1 times tilde{l}_2
其中,外积的计算方式为:
tilde{l}_1 = (tilde{x}_1, tilde{y}_1, tilde{a}_1) tilde{l}_2 = (tilde{x}_2, tilde{y}_2, tilde{a}_2) tilde{x} = tilde{l}_1 times tilde{l}_2 = 这种利用直线的齐次坐标表示求交点的方法,可以自然地推广到三维空间,求两条三维直线或平面的交点。同理,在三维情况下,交点坐标为两个直线或平面的齐次坐标外积。
5. 平行线可以相交 begin{cases} Ax By C = 0\ Ax By D = 0 end{cases} begin{cases} A dfrac{x}{w} B dfrac{y}{w} C = 0\ A dfrac{x}{w} B dfrac{y}{w} D = 0 end{cases} quadiffquad begin{cases} Ax By Cw = 0\ Ax By Dw = 0 end{cases} 在这种表示下,两条直线的齐次坐标分别为
(A, B, C) 和
(A, B, D) 。
w=0 时,对应的是无穷远点,两条直线在这个点处相交