2

我一直在搜索这个问题,但我真的找不到合适的答案。
我需要围绕给定点(例如,0,0,0)旋转圆柱体,但默认情况下给出圆柱体的枢轴。我该如何改变?

我找到了这个主题,这正是我想要做的,但我不知道如何用 java 来做。

为了更好地解释我想做的事情,我将展示 3 张图片。(v)

imageshack.us/photo/my-images/259/aintgood.jpg

imageshack.us/photo/my-images/840/whatineed.jpg

imageshack.us/photo/my-images/705/nogoodn.jpg

所以,第一张图片显示了我的基本问题,圆柱体的末端应该位于球体的中心,比如说(0,0,0)。用户给出两个角度。第一个用于 rotX 命令,第二个用于 rotZ 命令。圆柱体的枢轴位于其中心,因此,如图 3 所示,即使我平移圆柱体使其末端位于球体的中心,当它旋转时,整个物体都会毁掉。

图 2 显示了圆柱体-球体组的外观,无论给定角度。图像不是基于算法获得的,而是基于微积分的,并且是鼠标旋转的。

4

1 回答 1

3

绕任意点 P 旋转的一般过程是:

  1. 通过 -P 翻译(所以 P 在 (0, 0, 0) 处)
  2. 绕原点旋转
  3. 按 P 平移(将原点带回到 P 的原始位置)

最简单的方法是用齐次坐标表示一切,并用矩阵表示平移和旋转。组合上述三个变换(translate-rotate-translate)是通过矩阵乘法完成的。如果旋转由两个或多个更简单的旋转组成,那么旋转矩阵本身就是更简单旋转的矩阵的乘积。

于 2012-10-30T17:01:11.613 回答