游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5662|回复: 12

在矩阵旋转是在局部坐标平移是在世界坐标?

[复制链接]

10

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
发表于 2011-8-17 19:43:00 | 显示全部楼层 |阅读模式
矩阵旋转是在局部坐标平移是在世界坐标吗?(世界坐标系为左手坐标系 z轴往屏幕里,y轴向上,x轴向右)
比如说:我用函数D3DXMatrixRotationZ让一个方块绕z轴旋转90度(方块中心在局部坐标系中心)
我再想让方块绕X轴旋转90度,但这时从屏幕显示上看去,方块确是在Y轴上旋转了90度,
那么就是说让方块旋转地同时,它的局部坐标系也在旋转了。

不管怎么旋转,当我做在x轴上平移时,从屏幕上看都是横向的移动。

是这样的吗?还是我理解错了,我原来一直认为局部坐标是不会变的。
是这个D3DXMatrixRotationZ方法的问题,还是什么?

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2011-8-18 02:53:00 | 显示全部楼层

Re:在矩阵旋转是在局部坐标平移是在世界坐标?

如果程序员写成

矩阵初始化
平移
绕x轴旋转
绕y轴旋转
绕z轴旋转

当然是 平移永远都是正常平移。
----
如果是先旋转后平移

矩阵初始化
绕x轴旋转
绕y轴旋转
绕z轴旋转
平移

那么平移就变了方向了。
----
一切都是由程序员的代码决定的。

10

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2011-8-18 02:58:00 | 显示全部楼层

Re: Re:在矩阵旋转是在局部坐标平移是在世界坐标?

snhun: Re:在矩阵旋转是在局部坐标平移是在世界坐标?

如果程序员写成

矩阵初始化
平移
绕x轴旋转
绕y轴旋转
绕z轴旋转

当然是 平移永远都是正常平移。...


也即是旋转后,局部坐标会相对的会改变了。
至于平移,好像不管怎么旋转,平移都不会变方向吧,是沿世界坐标系平移,是这样的吗?

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2011-8-18 17:39:00 | 显示全部楼层

Re:在矩阵旋转是在局部坐标平移是在世界坐标?

不是

10

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2011-8-18 21:00:00 | 显示全部楼层

Re: Re:在矩阵旋转是在局部坐标平移是在世界坐标?

snhun: Re:在矩阵旋转是在局部坐标平移是在世界坐标?

不是


那是什么喃? [em24]

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2011-8-18 21:21:00 | 显示全部楼层

Re:在矩阵旋转是在局部坐标平移是在世界坐标?

请看2楼内容
仔细看
一个字一个字地看

9

主题

62

帖子

62

积分

注册会员

Rank: 2

积分
62
发表于 2011-8-19 09:03:00 | 显示全部楼层

Re:在矩阵旋转是在局部坐标平移是在世界坐标?

使用世界坐标系的话,顺序是先缩放,再旋转,再平移
使用本地坐标系的话,顺序是先平移,再旋转,再缩放
给你一篇参考文章
http://www.cnblogs.com/soroman/archive/2009/05/15/1457863.html

9

主题

62

帖子

62

积分

注册会员

Rank: 2

积分
62
发表于 2011-8-19 09:21:00 | 显示全部楼层

Re:在矩阵旋转是在局部坐标平移是在世界坐标?

旋转的也是有顺序的,像欧拉变换的旋转公式D3DXMatrixRotationYawPitchRoll的顺序是先Roll再Pitch再Yaw,需要注意的是这是在世界坐标系下
如果你需要自定义的顺序就要自己来级联3个方向的旋转矩阵了,
比如需要按照XYZ的顺序,级联MX,MY,MZ的顺序是
D3DXMatrixMultiply(&M,&MX,&MY);
D3DXMatrixMultiply(&M,&M,&MZ);
在本地坐标系下的话,这个顺序需要反过来

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2011-8-19 11:10:00 | 显示全部楼层

Re:在矩阵旋转是在局部坐标平移是在世界坐标?

什么叫“本地坐标系”?

我的永远都是:
1.矩阵初始化
2.平移
3.旋转

9

主题

62

帖子

62

积分

注册会员

Rank: 2

积分
62
发表于 2011-8-19 12:31:00 | 显示全部楼层

Re:在矩阵旋转是在局部坐标平移是在世界坐标?

世界坐标系不会因为模型的旋转或平移而发生变化,但模型自身的坐标系就不同了,比如你把一个模型倒过来,模型本身的Y轴就变成向下了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-8 17:34

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表