请问D3D中有没有一个点围着一个向量旋转的函数

shilong 2004-10-29 07:48:53
用坐标转换算来算去算死人啊...
要是有一个函数就好了

输入转动的向量V1,轴V2,角度a
输出转后的向量V3
...全文
180 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
houdy 2004-11-02
  • 打赏
  • 举报
回复
用四元数吧,效率比用变换矩阵高。
寻开心 2004-11-01
  • 打赏
  • 举报
回复
有的,就是那个四元数

关于这种都西就是用四元数最方便,还可以用于线性差值计算

关于围绕任意转轴旋转的公式都可以直接推倒出来的

就是 zxdplay(耍神) 给出的那个公式
zzwu 2004-10-31
  • 打赏
  • 举报
回复
把问题转换到 通过已知点、且和已知向量垂直的平面上 来计算。
算出结果来后,再将它转换到原来的坐标系。
xiaolizi 2004-10-31
  • 打赏
  • 举报
回复
To Nhsoft(我不是高手) , 是不是open source的啊?

“这里有办法直接从Quaternion求Vector而不用再转Matrix吗,感觉应该有,只是还不知道”
NHsoft来推导一下啊,或者有更高效率的方法?^_^
潘李亮 2004-10-31
  • 打赏
  • 举报
回复
我有一个数学库.自己写的。
merlinfang 2004-10-31
  • 打赏
  • 举报
回复
D3DXMAREIXRotationAxis得到MATRIX,然后
D3DXVec3Transform得到需要的Vector
~~~~~~~~
幻爷 2004-10-31
  • 打赏
  • 举报
回复
//这是我写的软方法

#include <math.h>
#define PI 3.141592653

//向量旋转函数
//向量(PX,PY,PZ)围绕旋转轴(AX,AY,AZ)旋转

void ComRotate( float angle ,//旋转的角度值(单位为弧度)
float AX,float AY,float AZ, //旋转轴
float *PX,float *PY,float *PZ)//向量坐标
{
float X,Y,Z,S,C;
X = *PX;Y=*PY;Z = *PZ;
S = (float)sin(angle);
C = (float)cos(angle);



*PX = X*(C+AX*AX*(1-C) )+
Y*(AX*AY*(1-C)-AZ*S)+
Z*(AX*AZ*(1-C)+AY*S);

*PY = X*(AX*AY*(1-C)+AZ*S)+
Y*(C+AY*AY*(1-C) )+
Z*(AY*AZ*(1-C)-AX*S);

*PZ = X*(AX*AZ*(1-C)-AY*S)+
Y*(AY*AZ*(1-C)+AX*S)+
Z*(C+AZ*AZ*(1-C));

}
xiaolizi 2004-10-29
  • 打赏
  • 举报
回复
想到一个笨的办法,不知道对不对^_^
D3DXQuaternionRotationAxis 得到需要的Quaternion
D3DXMatrixRotationQuaternion得到需要的Matrix
D3DXVec3Transform得到需要的Vector
===
这里有办法直接从Quaternion求Vector而不用再转Matrix吗,感觉应该有,只是还不知道,
有哪位大侠出来推导一下?

8,305

社区成员

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

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