绘制圆形以及球体

上次学会了如何绘制正方体和正四面体,今天开始绘制球体,估计不难,嘿嘿,为了稳妥起见,从圆形开始

果然很简单。。三分钟搞定,代码如下

#include<GL/GLUT.H>  
#include <windows.h>      
#include <math.h>      
#include <gl/GL.h>      

float pi =3.1415927f;
float r= 0.8f;

void myDisplay(void){
	glClear(GL_COLOR_BUFFER_BIT);

	glColor3f(1.0, 1.0, 0.0);
	glBegin(GL_LINE_STRIP);
	for (int i = 0; i <= 30; i++)
{ 
	glVertex2f(r*cos(2*pi*i/30),r*sin(2*pi*i/30));
}
	glEnd();

	glFlush();
}


int main(int argc, char *argv[])
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
	glutInitWindowPosition(100, 100);
	glutInitWindowSize(400, 400);
	glutCreateWindow("opengl1");
	glutDisplayFunc(&myDisplay);
	glutMainLoop();
	return 0;
}  

绘制圆形以及球体_第1张图片

下面着手画球体,争取几分钟之内搞定

十分钟搞定,越来越发现跟数学的关系好紧密啊

#include<GL/GLUT.H>  
#include <windows.h>      
#include <math.h>      
#include <gl/GL.h>      

float pi =3.1415927f;
float r= 0.8f;


void myDisplay(void){
	glClear(GL_COLOR_BUFFER_BIT);
	glRotatef(30, 1, 1, 1);
	glFrontFace(GL_CCW);

	for (int j = 0; j < 20; ++j)      
	{
		glBegin(GL_LINE_STRIP);
		for (int i = 0; i <= 20; i++)
		{
			glVertex3f(r*sin(pi*j / 20)*cos(2 * pi*i / 20), r*sin(pi*j / 20)*sin(2 * pi*i / 20),r*cos(pi*j/20));
		}
		glEnd();

		glBegin(GL_LINE_STRIP);
		for (int i = 0; i <= 20; i++)
		{
			glVertex3f(r*sin(pi*i / 20)*cos(2 * pi*j / 20), r*sin(pi*i / 20)*sin(2 * pi*j / 20), r*cos(pi*i / 20));
		}
		glEnd();
	}


	glFlush();
}



int main(int argc, char *argv[])
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
	glutInitWindowPosition(100, 100);
	glutInitWindowSize(400, 400);
	glutCreateWindow("opengl1");
	glutDisplayFunc(&myDisplay);
	glutMainLoop();
	return 0;
}  
效果如下
绘制圆形以及球体_第2张图片
突然有种小成就感,突然有种想把这东西画成地球的冲动了嘿嘿,后面试试怎么再把他转起来

你可能感兴趣的:(图形,OpenGL)