[OpenGL]计算机图形学实验01:一个简单的球体

本文介绍了一个使用OpenGL绘制球体的示例程序。该程序通过三角扇形和四边带状来构建球面,并通过旋转变换调整视角。文章展示了如何设置绘图颜色、观察窗口以及如何在屏幕上创建并显示球体。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <Windows.h>
#include <gl\glut.h>
#include<math.h>

#define PI 3.14

void myDisplay2(){

	//画两个顶端的圆形区域
	glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
	glBegin(GL_TRIANGLE_FAN);
	glVertex3d(0.0,0.0,1.0);
	double c = PI/180;
	float z = sin(c*80);
	float x,y;
	for(float theta =-180.0;theta<=180.0;theta+=20.0){
		GLfloat thetar = theta*c;
		x= sin(thetar)*cos(c*80);
		y= cos(thetar)*cos(c*80);
		glVertex3d(x,y,z);
	}
	glEnd();
	//画两个顶端的圆形区域
	glBegin(GL_TRIANGLE_FAN);
	glVertex3d(0.0,0.0,-1.0);
	z = -sin(c*80);
	for(GLfloat theta =-180.0;theta<=180.0;theta+=20.0){
		GLfloat thetar = theta*c;
		x= sin(thetar)*cos(c*80);
		y= cos(thetar)*cos(c*80);
		glVertex3d(x,y,z);


	}
	glEnd();



	for(float phi=-80;phi<=80;phi+=20){
		float phir = c*phi ;
		float phir20 = c*(phi+20) ;
		glBegin(GL_QUAD_STRIP);
		for(GLfloat theta =-180.0;theta<=180.0;theta+=20.0){
			GLfloat thetar = theta*c;

			x= sin(thetar)*cos(phir);
			y= cos(thetar)*cos(phir);
			z=sin(phir);
			glVertex3d(x,y,z);
			x= sin(thetar)*cos(phir20);
			y= cos(thetar)*cos(phir20);
			z=sin(phir20);
			glVertex3d(x,y,z);
		}
		glEnd();

	}


	glFlush();

}

void myInit2(){

	//属性设置
	glClearColor(0.0,0.0,1.0,1.0);//白色背景
	glColor3f(0.0,0.0,1.0);//绘图颜色为蓝色

	//设置观察条件
	//在观察坐标中定义一个50.0*50.0的窗口,窗口左下角为观察坐标系的坐标原点。
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluOrtho2D(-5.0,5.0,5.0,-5.0);//左右下上,因为坐标轴原点在左下角

	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	//glTranslated(2,2,0);
	glRotated(30,1,0,0);
	glRotated(60,0,1,0);
	glRotated(80,0,0,1);
	//glRotated(20,1,0,0);
	//glutPostRedisplay();


}

void main(int argc,char** argv){
	glutInit(&argc,argv);
	glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);

	glutInitWindowSize(500,500);
	glutInitWindowPosition(0,0);

	glutCreateWindow("DrawBall");


	glutDisplayFunc(myDisplay2);
	myInit2();
	glutMainLoop();


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值