码迷,mamicode.com
首页 > 其他好文 > 详细

齐次坐标

时间:2017-12-29 15:28:48      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:src   png   正交   简单的   ima   [1]   lan   ddl   top   

原文:http://tec.5lulu.com/mathematics/detail/k5n1g5w1ty8id7.html

所谓齐次坐标就是将一个原本是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‘ = p *m1+ 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 逐渐走向无穷远处的过程。


齐次坐标简单的说是增加了一维,这样就可以方便进行平移变换。在图形坐标中,我们往往都是通过矩阵运算的方式来运作的,所以我们需要这里整理下矩阵运算的一种知识,这里几张ppt直接可以解释是怎么做变换的。

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

以上的都是一些具体做变换的数学推导,这里不加以详述,之所以要引入齐次坐标这种概念,个人感觉主要目的除了解决平移这个矩阵运算的问题,还有就是解决“投影”的问题,目前我们所使用到的一些正交的坐标系对应的坐标都是一些光的投影,比如说,二维坐标,无论光怎么照射,两个面上的投影都不会移动位置,故不能进行平移变换,所以我们能做的只有移动光的位置,或者可以形象点说,是移动太阳的位置,这样照射下来对应的投影坐标系也会发生变换,通过一个更高维的变量来完成较低维数的平移变换。

技术分享图片

技术分享图片

 

其余还需要谈下面积坐标和齐次坐标系的关系,这里虽然说面积坐标是一种特殊的齐次坐标,仅是个人直观上感觉的解释,不是数学解释,从我的想法上说,就是,一个三角柱,齐次坐标一般都是横着切平面的,齐次坐标应该是可以任意切平面的,更好的说应该是切的平面的集合,而面积坐标未必是横着切的,但是切好的固定一个平面。

技术分享图片

 

就像这张图的意思而言,简单的说就是面积坐标是一般横着切的,而齐次坐标是一种一个坐标系的集合,也就是随便切,而我们所用来方便做平移变换的一般的都是横着切,故如上图横着切一样。

Matlab代码 

  1. v=[000;0500;5000;0050;50050;05050;];
  2. f=[1231;1264;2356;1354;4564];
  3. patch(‘Faces‘,f,‘Vertices‘,v,‘FaceColor‘,‘r‘);
  4. view(135,30)
  5. alpha(0.5)
  6. hold on;
  7.  
  8. x1=-100:100:100;
  9. y1=-100:100:100;
  10. temps1=[101010;202020;303030];
  11. x2=-100:100:100;
  12. y2=-100:100:100;
  13. temps2=[202020;202020;202020];
  14. mesh(x1,y1,temps1);
  15. hold on;
  16. mesh(x2,y2,temps2);

通过上图可以表现我对面积坐标和齐次坐标一些直观意义上的理解。

原文:http://www.baike.com/wiki/%E9%BD%90%E6%AC%A1%E5%9D%90%E6%A0%87

齐次坐标所属现代词,指的是将一个原本是n维的向量用一个n+1维向量来表示。在几何意义上,相当于把发生在三维空间的变换限制在H=1的平面内。以矩阵表达式来计算这些变换时,平移是矩阵相加,旋转和缩放则是矩阵相乘,综合起来可以表示为p‘ = p *m1+ m2(注:因为习惯的原因,实际使用时一般使用变化矩阵左乘向量)(m1旋转缩放矩阵, m2为平移矩阵, p为原向量 ,p‘为变换后的向量)。即它提供了用矩阵运算把二维、三维甚至高维空间中的一个点集从一个坐标系变换到另一个坐标系的有效方法。

示例/齐次坐标 编辑

例如,二维点(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‘ = p *m1+ 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 逐渐走向无穷远处的过程。

[1]

[1]^

原文:http://58.20.53.45/files/files_upload/content/material_134/content/002002002001001001/

技术分享图片

 

齐次坐标

标签:src   png   正交   简单的   ima   [1]   lan   ddl   top   

原文地址:https://www.cnblogs.com/hahalala/p/8143544.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!