OpenGL旋转线周围的对象

Jes*_*ica 4 c++ opengl transformation rotation

我在OpenGL和C++编程.我知道1行(对角线)上的2个点,并希望围绕该对角线旋转对象.我该怎么做呢?我知道如何使用glrotatef它围绕x,y或z轴旋转,但我不确定这一点.

cas*_*nca 5

x,y和z参数glRotate可以指定任意轴,而不仅仅是x,y和z轴.要找到穿过线的轴,只需减去线的终点以获得轴向量:如果两个点是(x1, y1, z1)(x2, y2, z2),则需要的轴是(x2-x1, y2-y1, z2-z1).

编辑:正如@chris_l指出的那样,这只有当线穿过原点时才有效.如果不是,首先应用平移以(-x1, -y1, -z1)使线穿过原点,然后应用上面的旋转,并将其转换回来(x1, y1, z1).


Jay*_*Jay 0

glrotate 绕轴旋转。一种方法是执行将旋转轴与其中一个坐标轴对齐的变换,执行旋转,然后反转第一步。如果您需要速度,您可以将这些操作组合成一个特殊的转换矩阵,然后一步应用它们。这里有一个描述。