OpenGL(C)绘制正方形

omqzjyyz  于 2022-09-26  发布在  其他
关注(0)|答案(2)|浏览(252)

我需要用c(OpenGL)画一个正方形,我只有一个坐标,这是正方形的中心(比方说0.5,0.5),我需要画一个正方形ABCD与每边0.2长度(AB,BC,CD,DA),我尝试使用NEXT函数,但它没有绘制任何原因,

void drawSquare(double x1,double y1,double radius)
{
    glColor3d(0,0,0);
    glBegin(GL_POLYGON);

    double locationX = x1;
    double locationY = x2;
    double r = radius;

    for(double i=0; i <= 360 ; i+=0.1)
    {
        glVertex2d(locationX + radius*i, locationY + radius*i);
    }

    glEnd();
}

谁能告诉我为什么它不工作\给我正确的方向(我不想画正常坐标为4的多边形,但只有1个坐标与给定的半径,谢谢!

6ju8rftf

6ju8rftf1#

您的代码甚至不会画圆。如果有什么不同的话,那就是它将很快绘制一条从查看区域延伸出来的对角线。基于半径和Angular ,圆图需要使用正弦和余弦。

我还没有尝试过这个代码,但它需要更像这样才能画一个正方形。

void drawSquare(double x1, double y1, double sidelength)
{
    double halfside = sidelength / 2;

    glColor3d(0,0,0);
    glBegin(GL_POLYGON);

    glVertex2d(x1 + halfside, y1 + halfside);
    glVertex2d(x1 + halfside, y1 - halfside);
    glVertex2d(x1 - halfside, y1 - halfside);
    glVertex2d(x1 - halfside, y1 + halfside);

    glEnd();
}

没有定义法线:也许我应该逆时针旅行。

siv3szwd

siv3szwd2#

绘制正方形的简单方法是使用GL_QUADS和正方形的四个角的四个顶点。示例代码如下:

glBegin(GL_QUADS);
glVertex2f(-1.0f, 1.0f); // top left
glVertex2f(1.0f, 1.0f); // top right 
glVertex2f(1.0f, -1.0f); // bottom right
glVertex2f(-1.0f, -1.0f); // bottom left
glEnd();

因为在这种情况下,你必须从中点画正方形,中点是正方形的两条对角线的相互作用。你使用以下事实,并得出相同的结论。

  • 对角线长度=x*2的平方根(x=正方形的边)
  • 正方形的对角线是垂直的
  • 正方形的对角线长度相同

如果你的点是交互作用点的0.5,0.5个坐标,而边是0.2。因此,您可以很容易地确定四个角的点坐标,如下图所示,并相应地进行编码。

相关问题