• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
String Of Brilliant Blue
湛蓝之弦
博客园    首页    新随笔    联系   管理     

坐标变换

图形学数学基础中,总能看见把(x,y,z,1)称为齐次坐标,而把(x,y,z)称为普通坐标,我觉得可能理解有问题,当然我对数学也知之甚少,希望一起讨论。
    图形学数学基础中,总能看见把(x,y,z,1)称为齐次坐标,而把(x,y,z)称为普通坐标,我觉得可能理解有问题,当然我对数学也知之甚少,希望一起讨论。首先我们必须清楚,何为“齐次”,从名字上来讲应该就是未知数次数相等的意思,齐次方程、齐次坐标应该都是这个意思。我们使用的3D坐标为(x,y,z),所有分量均为一次的,所以叫齐次坐标,依理4D坐标(x,y,z,w)也应该是齐次坐标。我觉得准确的说法应该是:把3D齐次坐标(x,y,z)增加一个一次分量w,变为4D齐次坐标(x,y,z,w)。实际上计算机图形学中将3D齐次坐标变为4D齐次坐标,纯粹是为了统一计算,明了表示,没什么其他。将定义在w=1平面上的所有点,定义为3D空间坐标的集合,而w=0时,因为x/w=0 == w(无穷)/1,所以w=0平面上的点经过仿射变换,其实就是w=1平面上无穷远处的点,定义为方向(向量)。所以严格来说(x,y,z,1)坐标为齐次坐标是错误的,很显然只有(x,y,z)(x,y,z,0)和(x,y,z,w)才是齐次的。
    程序中一般都使用右手坐标系,比如3DSMAX MAYA等等,但DX标新立异弄了个跟OPENGL相反的左手坐标系。其实当我们可以自己编写VS那刻起,这个问题就不在是个问题,数学上来说,只要在两个坐标系中使用完全一样的世界矩阵,相机矩阵和投影矩阵就能得到一模一样的结果,以前之所以困惑是因为OPENGL的固定流水线的投影矩阵是将Z进行了负向嵌位,现在顶点变换开放了,随便怎么写都可以,完全可以实现一个非对称投影矩阵做特殊效果。
posted @ 2009-08-07 12:35  effulgent  阅读(1998)  评论(5)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3