游戏开发论坛

 找回密码
 立即注册
搜索
查看: 11707|回复: 5

旋转矩阵求回欧拉角怎么算?

[复制链接]

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2008-4-13 22:50:00 | 显示全部楼层 |阅读模式
D3DXMatrixRotationYawPitchRoll(&matRot, &qR);
这个可以得到旋转矩阵,那么通过旋转矩阵怎么算回
欧拉角Yaw-y 再Pitch-x再 Roll-z,假设旋转顺序姿态固定

zxy姿态也行,只想得到一个方法,好像dxsdk并没有提供这样的方法?

我正在做场景编辑器,对象的旋转要象3dmax那样输入x,y,z的旋转,总不至于让用户去修改旋转矩阵或四元数吧
[em10]

88

主题

2743

帖子

4227

积分

论坛元老

Rank: 8Rank: 8

积分
4227
发表于 2008-4-14 07:17:00 | 显示全部楼层

Re:旋转矩阵求回欧拉角怎么算?

手工方法很考3D数学、图形知识的储备,不容易。。。

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2008-4-14 16:54:00 | 显示全部楼层

Re:旋转矩阵求回欧拉角怎么算?

把每次的旋转累加上去呗,矩阵乘法。
或者你要让用户修改 ypr分量就始终保存ypr分量就好了。

转回来是个很傻的想法。

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2008-4-14 20:42:00 | 显示全部楼层

Re: 旋转矩阵求回欧拉角怎么算?

每次累加?晕。
我要做的是场景编辑器啊,难道要把欧拉角存入到地图场景对象的数据里面去吗?
场景对象的transform matrix里面其实已经包含这样的信息,我需要算法解出来。
事实上有个方法
HRESULT D3DXMatrixDecompose(
  D3DXVECTOR3 * pOutScale,
  D3DXQUATERNION * pOutRotation,
  D3DXVECTOR3 * pOutTranslation,
  CONST D3DXMATRIX * pM
);
就是用来做这个的,但只能得到四元数,然后通过D3DXMatrixRotationQuaternion可以得到rotation matrix
可就是rotation matrix或四元数怎么才能反求得到欧拉角?

为什么要转回来,并不是很傻的想法,事实上我的确是有这个需求啊。你看看下面的截图就知道了啊,目的就是模仿3dmax那样友好的人机交互
sf_200841420420.png

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2008-4-16 10:35:00 | 显示全部楼层

Re:旋转矩阵求回欧拉角怎么算?

问题已经解决,用反三角函数求出来了。
http://planning.cs.uiuc.edu/node103.html
这篇文章给了我很大的帮助

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2010-11-12 19:54:00 | 显示全部楼层

Re:旋转矩阵求回欧拉角怎么算?

ding...
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-5-30 12:09

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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