【请教】3维空间关于自身坐标系的问题

myqoo 2011-03-06 05:14:01
之前做了一个3D的立方体,并且可以旋转。这个很简单,因为只有1个立方体,绕着世界坐标系转,所以让立方体8个点的x,y,z进行如下的公式就可以了。
X:
_y = cosX * y - sinX * z;
_z = cosX * z + sinX * y;

Y:
_x = cosY * x - sinY * z;
_z = cosY * z + sinY * x;

Z:
_x = cosZ * x - sinZ * y;
_y = cosZ * y + sinZ * x;

这个公式很简单,自己推算下就可以得出来。


但现在有了新问题:世界坐标系里有多个立方体,这些立方体不仅可以绕世界坐标系旋转(这个与上面的公式一样,就是让每个立方体都旋转一下),而且也能绕自身的坐标系旋转。后者的公式应该是这样的呢。多谢指教。
...全文
159 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xsj_guagua 2011-03-07
  • 打赏
  • 举报
回复
你给的公式最好注明一下参数意义,要不然完全看不懂。

关于如果一个立方体围绕自己的轴转的话,如果该轴与x或y或z平行的话,你可以将这种变化看做成在原世界坐标系进行标准旋转再平移一个相同的向量即可。

如果该轴不与x,或y,或z平行的话,还是可以先将这种变换看成是在原坐标系进行标准旋转,再将点旋转一个角度,该角度是旋转轴于xy平面(其它平面也可以)形成的交角,然后再平移一个相同向量即可。

三维空间的矩阵变换无非就是平移,缩放,旋转,与对应的变换矩阵相乘即可得
ryfdizuo 2011-03-07
  • 打赏
  • 举报
回复
标准的三维变换是通过矩阵(4*4)进行的。
局部坐标系和世界坐标系的转化只需要一个矩阵,
locMat * transMat = worldMat;
worldMat * transMat.inverse() = locMat;
找本3d数学书讲的更清楚。
http://www.cppblog.com/lovedday/archive/2008/01/16/41291.html
dianyancao 2011-03-06
  • 打赏
  • 举报
回复
相对化为绝对,相对的价值转换为正方体的绝对价值。

不嫌麻烦的话,用地新论,吧地球当作中心参考点参考系吧

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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