Coding a sphere?

Started by
2 comments, last by JnZ 22 years, 5 months ago
I''m coding a this game and I need to code a sphere in format: X,Y,Z X,Y,Z X,Y,Z (in textfile) but how to create this ball?

Advertisement
Download the NeHe tutorial about quadratics.
Here''s the function that I use. It''s optimized for triangle strips. It generates normals and texture coordinates.

  // draws a sphere with tex coords// radius - radius// lat_step - number of horizontal sections// long_step - number of vertical sections// draw_type - how the sphere is to be renderedvoid DrawSphere(double radius, int lat_step, int long_step, bool lighting, int draw_type){	double DEGTORAD = 0.0174532925199432;	glPushMatrix();	glBegin(draw_type);			for (double i = 0; i < 180; i += 180/lat_step)		{			glTexCoord2d(0, i/180);			glVertex3d(radius * sin(i * DEGTORAD), 				cos(i * DEGTORAD) * radius, 0.0f);						glTexCoord2d(0, (i + 180/lat_step)/180);			glVertex3d(radius * sin((i + 180/lat_step) * DEGTORAD), 				cos((i + 180/lat_step) * DEGTORAD) * radius, 0.0f);			for (double j = 0; j < 360; j += 360/long_step)			{				if (lighting)					glNormal3d(cos(DEGTORAD * (j + 360/(long_step * 2))) * sin((i + 180/(lat_step * 2)) * DEGTORAD), 						cos((i + 180/(lat_step * 2)) * DEGTORAD),						-sin(DEGTORAD * (j + 360/(long_step * 2))) * sin((i + 180/(lat_step * 2)) * DEGTORAD));													glTexCoord2d((j + 360/long_step)/360, i/180);					glVertex3d(cos(DEGTORAD * (j + 360/long_step)) * radius * sin(i * DEGTORAD), 						cos(i * DEGTORAD) * radius,						-sin(DEGTORAD * (j + 360/long_step)) * radius * sin(i * DEGTORAD));										glTexCoord2d((j + 360/long_step)/360, (i + 180/lat_step)/180);					glVertex3d(cos(DEGTORAD * (j + 360/long_step)) * radius * sin((i + 180/lat_step) * DEGTORAD), 						cos((i + 180/lat_step) * DEGTORAD) * radius,						-sin(DEGTORAD * (j + 360/long_step)) * radius * sin((i + 180/lat_step) * DEGTORAD));				}		}		glEnd();	glPopMatrix();}  
Thanks!

This topic is closed to new replies.

Advertisement