openGL画圆代码生成椭圆

#include<windows.h>
#include<gl/glut.h>
#define PI 3.141415926
#include<math.h>
void Display(void);
void Poloygon(void);
void Reshape(int w,int h);

int main(int argc,char* argv[]){
    glutInit(&argc,argv);//初始化GLUT

     glutInitDisplayMode(GLUT_SINGLE| GLUT_RGB);//显示模式:双缓冲、RGBA
    glutInitWindowSize(1024,600); //设置窗口
    glutInitWindowPosition(400,400);
    glutCreateWindow("Car");
    glutDisplayFunc(Display);
    glutMainLoop();//调用传递指令给GLUT现在开始它的内部循环
    glClearColor(0.75f,0.75f,0.75f,0.5f);
    return 0;

}



void Display()
{
    glClear(GL_COLOR_BUFFER_BIT);//清空帧缓存
	glColor3f(1.0f,1.0f,0.0f);
	glBegin(GL_POLYGON);
	int n = 3600;
	float R = 0.1f;
    for(int i = 0;i<n;i++){
           glVertex2f(cos(2*PI/n*i)*R+0.1,sin(2*PI/n*i)*R+0.1);
    }
	glEnd();

    glFlush();


}在这里插入代码片

在这里插入图片描述
反复检查后,发现代码是没有错误的,但是明明是圆的代码,为什么会生成椭圆呢?或者,换种说法,生成的其实是一个圆,但是因为被压缩了,所以,看起来是一个椭圆。

 glutInitWindowSize(1024,600);

原来是在设置窗口大小时,设置的是一个长方形的窗口,就导致图形被“压扁了”
(其实这里应该是窗口和视口变换的问题,但是我现在还不会……,就暂时把它设置为正方形的,后面再说)
在这里插入图片描述
这样就能得到圆了,但把窗口放大后,又变成了椭圆,所以,窗口和视口的变换还是很重要的。

以上纯属瞎猜,有大佬看见了别骂我,hhhhh

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值