当前位置: 首页 > 面试题库 >

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

金皓君
2023-03-14
问题内容

我已经在这个问题上进行了很多搜索,但是我找不到真正合适的答案。
我需要围绕给定点(例如0,0,0)旋转圆柱体,但是默认情况下会给出圆柱体的枢轴。我该如何改变?

为了更好地说明我想做什么,我将显示3张图像。

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显示了无论给定角度如何,圆柱球组的外观。该图像不是基于算法获得的,而是基于微积分的,并且经过鼠标旋转。


问题答案:

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

  1. 用-P翻译(所以P在(0,0,0)处)
  2. 绕原点旋转
  3. 通过P进行翻译(将原点返回到P的原始位置)

最简单的方法是用均质坐标表示所有内容,并通过矩阵表示平移和旋转。通过矩阵乘法完成上述三个变换(translate-
rotate-translate)的组合。如果旋转是由两个或更多个简单旋转组成,则旋转矩阵本身就是简单旋转矩阵的乘积。



 类似资料:
  • 问题内容: 我试图在这个问题中创建一个类似于“奖杯轮”的可旋转节点。到目前为止,我具有甩尾功能,可以使用效果很好的UIPanGestureRecognizer在物理物体上添加角度脉冲。我也可以通过触摸停止旋转。 现在,我试图通过拖动或滑动手势来微调方向盘,这样,如果玩家对最终的效果不满意,就可以手动旋转/拖动/旋转它所喜欢的旋转方式。 目前,我将触摸的位置保存在touchesBegan中,并尝试在

  • 下面是java中的一个代码段,用于将坐标为a(10,10),B(20,10),C(20,20),D(10,20)的顶点围绕正方形的中心点旋转一个角度。正方形的边是10分。旋转角度为90度。理想情况下,旋转后A必须变成B,B必须变成C,C必须变成D,D必须变成A。 所取得的结果是不正确的 > 点A(10,10)旋转到(20,10)---正确 点B(20,10)旋转到(30,10)----不正确 nu

  • 我目前正在尝试绕世界x轴旋转一个位置向量(0,0,1),然后将其旋转回其原始位置(只是尝试使其工作)。我阅读了旋转矩阵,并使它工作(排序),但我现在相当卡住了。 如图和代码所示,我在起点(0,0,1)处创建了一个立方体,并将其向下旋转30度。但顺时针旋转时,它的旋转角度似乎超过30度。但是,当我逆时针(30度)旋转它时,它确实旋转了适当的量。这导致它没有在它应该(0,0,1)的起点处结束。 我想知

  • 嗨,我正在尝试实现一个带有旋转的opengl程序 以下代码仅供参考:

  • 当我尝试使用旋转图像视图时,我现在开始学习JavaFX 它绕着它的中轴线旋转,但是当我尝试使用 它随机旋转,我不知道它的旋转轴是一样的

  • 问题内容: 有没有一种简单的方法可以围绕图片中心旋转图片?我首先使用了AffineTransformOp。看起来很简单,而且需要,并且在一个整洁的Google会话中为矩阵找到正确的参数。所以我认为… 我的结果是这样的: 如果您忽略旋转90度的倍数的情况,这非常简单(sin()和cos()无法正确处理)。该解决方案的问题在于,它围绕图片左上角的(0,0)坐标点进行变换,而不是围绕图片中心进行正常的变