本文主要是介绍MVG读书笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基础篇
概念篇
齐次坐标
通常我们将二维坐标表示为二维向量,三维坐标表示为三维向量,而齐次坐标就是将一个原本是n维坐标用一个n+1维向量来表示。
例如,二维点(x,y)的齐次坐标表示为(hx,hy,h)。由此可以看出,一个向量的齐次表示是不唯一的,齐次坐标的h取不同的值都表示的是同一个点,比如齐次坐标(8,4,2)、(4,2,1)表示的都是二维点(4,2)。
给出点的齐次表达式[X Y H],就可求得其二维笛卡尔坐标,即
(X Y H)→= (x,y,1), 这个过程称为正常化处理。
在几何意义上,相当于把发生在三维空间的变换限制在H=1的平面内。
许多图形应用涉及几何变换,主要包括平移、旋转、缩放。以矩阵表达式来计算这些变换时,平移是矩阵相加,旋转和缩放则是矩阵相乘,综合起来可以表示为p' = m1*p+ m2(注:因为习惯的原因,实际使用时一般使用变化矩阵左乘向量)(m1旋转缩放矩阵, m2为平移矩阵, p为原向量 ,p'为变换后的向量)。引入齐次坐标的目的主要是合并矩阵运算中的乘法和加法,表示为p' = p*M的形式。即它提供了用矩阵运算把二维、三维甚至高维空间中的一个点集从一个坐标系变换到另一个坐标系的有效方法。
其次,它可以表示无穷远的点。n+1维的齐次坐标中如果h=0,实际上就表示了n维空间的一无穷远的点。对于齐次坐标(a,b,h),保持a,b不变,|V|=(x1*x1,y1*y1,z1*z1)^1/2的过程就表示了标准坐标系中的一个点沿直线 ax-by=0 逐渐走向无穷远处的过程。
2D 射影几何和变换
点的表达式
因为用其次坐标表示二维坐标,所以坐标是三维向量形式为\[{\mathbf{x}}{\text{ }} = ({x_{1,}}{x_2},1)\]。
直线表达式
平面上的一条直线可用形如\[a{x_1} + {\text{ }}b{x_2} + {\text{ }}c{\text{ }} = {\text{ }}0\] 的方程表示,一条直线也可以用矢量\[\,l = {\left( {a,b,c} \right)^T}\]表示。点 x(x,y,1)在直线\[\,l = {\left( {a,b,c} \right)^T}\] 上,则可以表示为\[{x^{^T}}l = 0\]。
在此基础上我们可以的得到以下结论:
两直线l和l' 的交点是点\[{\text{x}} = l*l'\]。
这篇关于MVG读书笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!