围绕特定点旋转(例如,围绕0,0,0旋转)

时间:2012-10-30 16:40:59

标签: java rotation java-3d

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

我找到了this主题,这是我想要做的,但我不知道如何用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显示了圆柱球组的外观,无论给定的角度如何。 图像不是基于算法获得的,而是基于微积分和mouserotated。

1 个答案:

答案 0 :(得分:3)

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

  1. 翻译-P(所以P是(0,0,0))
  2. 围绕原点旋转
  3. 翻译P(将原点带回P的原始位置)
  4. 最简单的方法是在homogeneous coordinates中表示所有内容,并用矩阵表示翻译和旋转。组合上述三个变换(translate-rotate-translate)是通过矩阵乘法完成的。如果旋转由两个或更多更简单的旋转组成,则旋转矩阵本身是矩阵的乘积,用于更简单的旋转。