数学函数在OpenGL程序中返回零

时间:2013-12-06 00:03:46

标签: c opengl

我已经知道你们中没有人能够复制这个bug,但我甚至不知道该怎么办。这是代码:

void Arrow2D(double x, double y, double x2, double y2, double width) {
    double deltaX = x2 - x;
    double deltaY = y2 - y;
    double angle = atan2(deltaY, deltaX) * 180 / 3.14;
    double heightArrow = sqrt(deltaX*deltaX + deltaY*deltaY);
    printf("height = sqrt(%f) = %f\n", deltaX*deltaX + deltaY*deltaY, heightArrow);
    /*glPushMatrix(GL_MODELVIEW);
    glRotatef(angle, 0.0, 0.0, 1.0);
    glColor3f(1.0, 1.0, 1.0);

    //glTranslatef(200, 200, 0);
    glBegin(GL_QUADS);
    glVertex2f(-width/2, 20);
    glVertex2f(-width/2, 0);
    glVertex2f(width/2, 0);
    glVertex2f(width/2, 20);
    glEnd();
    glBegin(GL_TRIANGLES);
    glVertex2f(-width/1.2, 20);
    glVertex2f(+width/1.2, 20);
    glVertex2f(0, 30);
    glEnd();

    glPopMatrix(GL_MODELVIEW);*/

}

现在,如果第二部分被注释,变量heightArrow的值将被正确打印。如果我取消注释注释代码,我只需获得以下打印:

height = sqrt(5000.000000) = 0.000000

基本上我总是得到0作为输出(这与我用来计算角度的atan2函数的行为相同)。在我的一个可视化函数中调用Arrow2D方法,该函数在GLUT display方法中调用。

0 个答案:

没有答案