问一下这个函数到底是如何旋转矩阵的??

RabbitLBJ 2011-12-23 11:17:41
是在三个轴上分别旋转,那先后顺序呢??谢谢

inline D3DXMATRIX* SetRotation(D3DXMATRIX* pOut,float fX, float fY, float fZ)
{
#ifdef DEBUG
if(!pOut)
{
assert(0);
return NULL;
}
#endif

D3DXMatrixIdentity(pOut);
double cx = cos(fX);
double sx = sin(fX);
double cy = cos(fY);
double sy = sin(fY);
double cz = cos(fZ);
double sz = sin(fZ);

pOut->_11 = (float)(cy * cz);
pOut->_12 = (float)(cy * sz);
pOut->_13 = (float)(-sy);

pOut->_21 = (float)(sx * sy * cz - cx * sz);
pOut->_22 = (float)(sx * sy * sz + cx * cz);
pOut->_23 = (float)(sx * cy);

pOut->_31 = (float)(cx * sy * cz + sx * sz);
pOut->_32 = (float)(cx * sy * sz - sx * cz);
pOut->_33 = (float)(cx * cy);
}
...全文
225 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
无名剑 2012-02-25
  • 打赏
  • 举报
回复
看函数名似乎是 先绕X轴旋转 再绕Y轴旋转 最后绕Z轴旋转

用三个矩阵叉乘去推导下看看结果是不是
dana9919 2012-02-09
  • 打赏
  • 举报
回复
别告诉我说对你没用,喵。
我去年花了好几天看资料才干出来的METHOD 喵
网上能发帖问的地方我会问了喵,
但是没人回答我 呜
dana9919 2012-02-09
  • 打赏
  • 举报
回复
D3DXQUATERNION q4Rotation;
D3DXQuaternionRotationAxis(&q4Rotation,&v3Axle,fRadian);//取得按轴旋转得到的四元数
//取出平移量
D3DXVECTOR3 v3Pos =D3DXVECTOR3(_mxWorld._41,_mxWorld._42,_mxWorld._43);
D3DXMatrixTransformation(&_mxWorld,NULL,NULL,NULL,&v3Org,&q4Rotation,&v3Pos);

喵,四元组原理很让人头痛,但有函数可以从转角取四元组。
dana9919@163.com
Binzo 2012-01-10
  • 打赏
  • 举报
回复
cos(a)cos(c) - cos(b)sin(a)sin(c) -cos(b)cos(c)sin(a) - cos(a)sin(c) sin(a)sin(b) 0
cos(c)sin(a) + cos(a)cos(b)sin(c) cos(a)cos(b)cos(c) - sin(a)sin(c) -cos(a)sin(b) 0
sin(b)sin(c) cos(c)sin(b) cos(b) 0
0 0 0 1
Binzo 2012-01-10
  • 打赏
  • 举报
回复
就是这个公式:
cos(a)cos(c) - cos(b)sin(a)sin(c) -cos(b)cos(c)sin(a) - cos(a)sin(c) sin(a)sin(b) 0
cos(c)sin(a) + cos(a)cos(b)sin(c) cos(a)cos(b)cos(c) - sin(a)sin(c) -cos(a)sin(b) 0
sin(b)sin(c) cos(c)sin(b) cos(b) 0
0 0 0 1
大概就是这样的格式。
IONPhantom 2011-12-24
  • 打赏
  • 举报
回复
这是制作旋转矩阵的公式啊
Baesky 2011-12-24
  • 打赏
  • 举报
回复
默认的顺序无关紧要,因为每个轴的旋转量可以按任何次序合并,唯一的例外是gimbal lock,所以才又去用四元数做旋转。

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧