我需要用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个坐标与给定的半径,谢谢!
2条答案
按热度按时间6ju8rftf1#
您的代码甚至不会画圆。如果有什么不同的话,那就是它将很快绘制一条从查看区域延伸出来的对角线。基于半径和Angular ,圆图需要使用正弦和余弦。
我还没有尝试过这个代码,但它需要更像这样才能画一个正方形。
没有定义法线:也许我应该逆时针旅行。
siv3szwd2#
绘制正方形的简单方法是使用
GL_QUADS
和正方形的四个角的四个顶点。示例代码如下:因为在这种情况下,你必须从中点画正方形,中点是正方形的两条对角线的相互作用。你使用以下事实,并得出相同的结论。
如果你的点是交互作用点的0.5,0.5个坐标,而边是0.2。因此,您可以很容易地确定四个角的点坐标,如下图所示,并相应地进行编码。