Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2009, 21:11   #1
Glarus
 
Аватар для Glarus
 
Регистрация: 26.10.2009
Сообщений: 5
По умолчанию Сфера в OpenGl

Задание создать сферу, состоящую из прямоугольников.
Я создал сферу из точек, зная уравнение окружности.

Код:
#pragma comment( lib, "opengl32.lib" )
#pragma comment( lib, "glu32.lib" )
#pragma comment( lib, "winmm.lib" )

#include "window.h"
#include "mmsystem.h"
#include <GL/GLU.h>
#include <math.h>

double	pi=3.1416;
double	angle		= 0.0;
DWORD	old_time;


short width, height;

void render( Window* w )
{
	glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
	
	DWORD new_t	= timeGetTime();
	DWORD delta	= new_t - old_time;
	old_time	= new_t;
	double dt	= static_cast< double >( delta ) / 1000.0;
	angle	+=	45.0 * dt;

	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluPerspective( 90, ( double ) width/height, 0.1, 1024);
	gluLookAt( 6*cos(angle*pi/180), 5*cos(angle*pi/180), 6*sin(angle*pi/180), 0, 0, 0, 0, 1, 0 );
	glMatrixMode( GL_MODELVIEW );

	
                       
	glBegin( GL_POINTS );
	glColor3ub( 0, 255, 0 );
	for(float a=0;a<150;a++)
		for(float b=0;b<150;b++)
		{
			glVertex3d( 2*cos(a)*cos(b), 2*sin(b), 2*sin(a)*cos(b) );
		
		}  
	
		glEnd();



	w->finishFrame();
}

int WINAPI WinMain( HINSTANCE inst, HINSTANCE, LPSTR, int )
{
	Window* w = new Window();

	width	= static_cast< short >( GetSystemMetrics( SM_CXSCREEN ) );
	height	= static_cast< short >( GetSystemMetrics( SM_CYSCREEN ) );

	try
	{
		w->init( 0, inst, width, height, true );
	}
	catch( const std::exception& ex )
	{
		MessageBox( 0, ex.what(), "Error", MB_OK | MB_ICONSTOP );
	}
	catch( ... )
	{
		MessageBox( 0, "Unhandled exception!", "Error", MB_OK | MB_ICONSTOP );
	}

	if( !w->isDestroyed() )
	{
		glClearColor( 0.0f, 0.4f, 0.6f, 1.0f );
		glEnable(GL_CULL_FACE);
		glEnable(GL_COLOR_MATERIAL);
	
	}

	while( !w->isDestroyed() )
	{
		if( !w->update() )
			render( w );
	}

	delete w;

	return 0;
}
Я полагаю, что нужно задать такие координаты для прямоугольника, чтобы в цикле он создавал поверхность, близкую к окружности, но так как для точек сделать не получается.

Подскажите что сделать чтобы расположить прямоугольники так, чтобы они образовали окружность?
Glarus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Opengl Алексадр Компоненты Delphi 4 29.09.2009 17:23
OpenGL Paul_AG C++ Builder 20 14.09.2009 19:07
OpenGL в С# LeGAl Общие вопросы .NET 0 30.04.2009 02:15
Графики поверхностей. (сфера, гиперболоид) McAron Microsoft Office Excel 13 23.01.2009 01:30
OpenGL Witaliy Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 01.05.2008 21:05