【问题标题】:opengl translating using utility function使用效用函数的opengl翻译
【发布时间】:2013-03-15 22:12:56
【问题描述】:

这是我用于转换点的实用函数:

void translatePoints(float x, float y, int transX, int transY)
{
    glMatrixMode(GL_MODELVIEW);
    //glLoadIdentity();
    glBegin(GL_LINES);
    // original points
    glVertex2f(x,y);    
    glVertex2f(x + transX, y + transY);
    glEnd();
    glFlush();
}

我有类似的画圆、缩放点和旋转点的功能 在不使用矩阵平移的情况下,我必须从 myDisplay 传递 x 和 y 值,并使形状从中心平移、缩放和旋转。 如果我有一个有 6 个点的形状,比如星星,这个功能就不起作用。 我想这个函数必须返回两个点,否则我可以使用指针。但我不确定如何实现这些,我也相信我不应该在这个函数中画出这些点。 最后我要画一个不同形状的场景。

【问题讨论】:

  • 我看不出该函数如何转换点。它画了一条线。 究竟你想让这个函数做什么?尽可能具体。

标签: opengl translate


【解决方案1】:

我认为你想要的是

glVertex2f(x + transX, y + transY);
glVertex2f(a + transX, b + transY);

您的线从 (x,y) 到 (a,b) 的位置。您正在从原始点画一条线,到您翻译的原始点,而不是翻译这两个点。

希望我正确地解释了你的问题

【讨论】:

    【解决方案2】:

    我理解你的问题,我试图在这里解释。 例如,让您使用四个点绘制 2D 正方形。制作一个变量来保存绘制正方形的坐标值,让我们假设变量名称如下所示

    x1, y1, z
    x2, y2, z
    x3, y3, z
    x4, y4, z
    

    这里z坐标是固定的。现在,如果您想创建一个函数来平移正方形,请像这样实现您的函数。

    void translateSquare(int transX, int transY)
    {
      x1 + transX; y1 + transY;
      x2 + transX; y2 + transY;
      x3 + transX; y3 + transY;
      x4 + transX; y4 + transY;
    }
    

    当您调用此函数时,您的正方形将通过值 transX 和 transY 进行平移。所以为你的显示器制作一个类似这样的函数。

    【讨论】:

      猜你喜欢
      • 2014-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-14
      • 1970-01-01
      • 2020-02-01
      • 1970-01-01
      • 2015-02-14
      相关资源
      最近更新 更多