【问题标题】:how to rotate an object from a point inside the object如何从对象内部的一点旋转对象
【发布时间】:2013-01-30 05:21:35
【问题描述】:

假设我们有一个正方形,在它被平移到某个位置后,我想围绕对象内的一个点旋转它。

     glPushMatrix();
       glTranslatef(50, 50, 0.0);
       glRotatef(joint, 0.0, 0.0, 1.0);
       glScalef(10,20, 1.0);
       glTranslatef(0.0, -0.5, 0.0);
       glColor3f(1.0, 0.0, 0.0);
       drawSquare(1.0);
     glPopMatrix();

上面那个只在缩放后围绕 (0.0) 点旋转。如果我将 glRotatef(joint, 0.0, 0.0, 1.0) 更改为 glRotatef(joint, 0.0, 5.0, 1.0),则对象开始扭曲。

【问题讨论】:

    标签: opengl


    【解决方案1】:

    OpenGL 中的旋转围绕位于原点 (0, 0, 0) 的轴旋转。为了围绕特定点旋转,您首先需要将该点平移到原点,然后执行旋转。在 OP 中,您将围绕点 (-50,-50, 0) 旋转(因为平移移动坐标系,而不是特定点),然后围绕 旋转 joint 度Z 轴。

    从 OP 开始,假设 joint 每帧都更新,我希望该代码具有围绕点 (-50, -50, 0) 运行的正方形。

    【讨论】:

    • 是的,你说的是正确的,但没有准确回答我的问题。使用上面的代码,我想将对象转换为 (50,50),然后围绕 (50,48) 旋转...我应该怎么做?
    • 然后将其转换为 (0, -2) 并进行旋转
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    相关资源
    最近更新 更多