opengl初学之(坐标轴和椭圆)

这篇博客介绍了如何使用OpenGL来绘制二维坐标轴和椭圆。首先通过GL_LINES绘制了从-1.0到1.0的x轴和y轴。然后利用GL_POLYGON和迭代方法生成近似的椭圆,通过改变半径和角度来实现不同形状的椭圆。代码中展示了如何调整椭圆的长轴和短轴长度,以及如何定位椭圆的中心。最后,给出了完整的OpenGL代码示例,用于在窗口中显示绘制的坐标轴和椭圆。
摘要由CSDN通过智能技术生成

坐标轴

 二维坐标轴由x,y轴两条直线组成,因此我们只需画两条直线就行。

glBegin(GL_LINES);
	glVertex3f(-1.0, 0.0, 0.0);
	glVertex3f(1.0, 0.0, 0.0);
	glVertex3f(0.0, 1.0, 0.0);
	glVertex3f(0.0,-1.0, 0.0);
	glEnd();

glVertex3f()参数的范围为-1.0到1.0

椭圆

 因为椭圆是在圆画法的基础上改进,所以先学圆的画法。

glBegin(GL_POLYGON);
	for (int i = 1;i <= n;i++)
	{
		glVertex2f(R * cos(2 * P / i * n), R * sin(2 * P / i * n));
	}
	glEnd();

R为圆的半径,n为圆的精度,n越大则画的图形越接近圆。

 椭圆则将R替换为a和b(a为长轴长,b短轴长)

    注意我们所画的圆和椭圆的中心都在原点上,想要中心不在原点的椭圆,可以修改函数glVertex2f()里的参数,非原点的中心在原点中心的参数上进行相应的加减就行了。

需要注意的一点是,窗口的图形是左减右加,与数学公式里的左加右减相反。

运行结果如图

 

glVertex2f(0.5+a * cos(2 * P / i * n), b * sin(2 * P / i * n));

#include<GL/glut.h>
#include<math.h>
void renderScene(void) {
	const GLfloat a = 0.5, b = 0.3;//a为长轴长,b为短轴长
	const GLfloat P = 3.1415926536;
	int n = 5000;//椭圆精度
	glClear(GL_COLOR_BUFFER_BIT);
	glBegin(GL_LINES);//2维坐标轴
	glVertex3f(-1.0, 0.0, 0.0);
	glVertex3f(1.0, 0.0, 0.0);
	glVertex3f(0.0, 1.0, 0.0);
	glVertex3f(0.0,-1.0, 0.0);
	glEnd();
	glBegin(GL_POLYGON);//椭圆
	for (int i = 1;i <= n;i++)
	{
		glVertex2f(a * cos(2 * P / i * n), b * sin(2 * P / i * n));
	}
	glEnd();
	glFlush();
}
int main(int argc, char** argv) {
	glutInit(&argc, argv);//初始化
	glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
	glutInitWindowPosition(100,100);//设置窗口出现的位置
	glutInitWindowSize(320, 320);//设置窗口大小
	glutCreateWindow("椭圆");//创建窗口
	glutDisplayFunc(renderScene);
	glutMainLoop();
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值