为什么坐标变换的顺序必须是: 缩放->旋转->平移

【Math】世界坐标变换要先缩放、后旋转、再平移的原因

一个三维场景中的各个模型一般需要各自建模,再通过坐标变换放到一个统一的世界空间的指定位置上。 这个过程在 3D 图形学中称作“世界变换” 。 世界变换有三种,平移、旋转和缩放 (实际还有不常用的扭曲和镜像,它们不是affine变换)。 这三种变换按各种顺序执行,结果是不同的。 可是实际的应用中一般按照 缩放 -> 旋转 -> 平移的顺序进行。 这样做的原因是可以获得最符合常理的变换结果。

比方说,通过世界变换希望获得的结果可能是:
将一个放在原点的物体(比方说可乐罐)移动到(30,50),让它自身倾斜 45 度,再放大 2 倍。

而不希望的结果是:
和本地坐标轴成角度的缩放(会导致扭曲,像踩扁的可乐罐)。
绕自己几何中心以外位置的原点的旋转 (地球公转式) 和缩放。

而颠倒了上述变换顺序就会得到这样不自然的结果。
具体的说:
当缩放在旋转之后进行时,会发生现象1。
当缩放和旋转在平移之后进行时会发生现象2。

这时因为:
在物体刚刚放入世界坐标系的时候使用的是本地坐标,也就是本地和全局坐标系的原点和坐标轴都是重合的(当然两者分别使用了左右手坐标系时除外 - 那是BUG),此时所有物体都“把世界坐标系当做自己的本地坐标系”。
而经过了坐标变换之后:
缩放变换不改变坐标轴的走向,也不改变原点的位置,所以两个坐标系仍然重合。
旋转变换改变坐标轴的走向,但不改变原点的位置,所以两个坐标系坐标轴不再处于相同走向。
平移变换不改变坐标轴走向,但改变原点位置,两个坐标系原点不再重合。

这样就可以解释问什么缩放不能在旋转之后,而缩放和旋转都不能在平移之后了。 于是没有问题的顺序只能是 缩放 -> 旋转 -> 平移 。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值