Автор работы: Пользователь скрыл имя, 20 Ноября 2010 в 19:56, Не определен
Для выполнения курсовой работы студенту необходимо написать программу, осуществляющую визуализацию заданного трехмерного объекта (метод визуализации – каркасный, т.е. без удаления невидимых линий) и позволяющую пользователю управлять перемещениями и трансформациями объекта и/или наблюдателя.
return FALSE;// Вернуть false
}
if
(!(hRC=wglCreateContext(hDC)))
// Возможно ли установить Контекст Рендеринга?
{
KillGLWindow(); // Восстановить экран
MessageBox(NULL,"
return FALSE; // Вернуть false
}
if(!wglMakeCurrent(hDC,
// Попробовать активировать Контекст Рендеринга
{
KillGLWindow(); // Восстановить экран
MessageBox(NULL,"
return FALSE;// Вернуть false
}
ShowWindow(hWnd,SW_SHOW)
SetForegroundWindow(
SetFocus(hWnd); // Установить фокус клавиатуры на наше окно
ReSizeGLScene(width, height);
// Настроим перспективу для нашего OpenGL экрана.
if (!InitGL()) // Инициализация только что созданного окна
{
KillGLWindow();// Восстановить экран
MessageBox(NULL,"
return FALSE; // Вернуть false
}
return TRUE;// Всё в порядке!
}
LRESULT CALLBACK WndProc( HWND hWnd,
// Дескриптор нужного окна
UINT uMsg,
WPARAM wParam, // Дополнительная информация
LPARAM lParam) // Дополнительная информация
{
switch (uMsg) // Проверка сообщения для окна
{
case WM_ACTIVATE: // Проверка сообщения активности окна
{
if (!HIWORD(wParam))
// Проверить состояние минимизации
{
active
}
else
{
active
}
return 0; // Возвращаемся в цикл обработки сообщений
}
case WM_SYSCOMMAND:// Перехватываем системную команду
{
switch (wParam) // Останавливаем системный вызов
{
case SC_SCREENSAVE:
// Пытается ли запустится скринсейвер?
case SC_MONITORPOWER:
// Пытается ли монитор перейти в режим сбережения энергии?
return 0; // Предотвращаем это
}
break; // Выход
}
case WM_CLOSE: // Мы получили сообщение о закрытие?
{
PostQuitMess
return 0; // Вернуться назад
}
case WM_KEYUP: // Была ли нажата кнопка?
{
if( wParam=='A') Depth+=0.5;
if( wParam=='Z') Depth-=0.5;
if( wParam=='S') Route+=0.05;
if( wParam=='X') Route-=0.05;
if( wParam=='Q')MasRotate[0]=!
if( wParam=='W')MasRotate[1]=!
if( wParam=='E')MasRotate[2]=!
return 0;
}
case WM_SIZE: // Изменены размеры OpenGL окна
{
ReSizeGLScen
// Младшее слово=Width, старшее слово=Height
return 0; // Возвращаемся
}
}
// пересылаем все необработанные сообщения DefWindowProc
return
DefWindowProc(hWnd,uMsg,
}
int WINAPI WinMain( HINSTANCE hInstance,/
HINSTANCE
// Дескриптор родительского приложения
LPSTR lpCmdLine,// Параметры командной строки
Int nCmdShow) // Состояние отображения окна
{
MSG msg; // Структура для хранения сообщения Windows
BOOL
done=FALSE; // Логическая переменная для выхода
из цикла
// Создать наше OpenGL окно
if
(!CreateGLWindow("OpenGL",640,
{
return 0;// Выйти, если окно не может быть создано
}
while(!done) // Цикл продолжается, пока done не равно true
{
if (PeekMessage(&msg,NULL,0,0,PM_
//
Есть ли в очереди какое-
{
if (msg.message==WM_QUIT)
// Мы получили сообщение о выходе?
{
done=
}
else // Если нет, обрабатывает сообщения
{
Transl
Dispat
}
}
else // Если нет сообщений
{
// Прорисовываем сцену.
if ((active && !DrawGLScene()) || keys[VK_ESCAPE])
// Активна ли программа?
{
done=
}
else // ESC говорит об останове выполнения программы
{
SwapBu
// Не время для выхода, обновим экран.
}
if (keys[VK_F1]) // Была ли нажата F1?
{
keys[
// Если так, меняем значение ячейки массива на false
KillGL
fullsc
// Пересоздаём наше OpenGL окно
if(!
{
}
}
}
}
KillGLWindow(); // Разрушаем окно
return (msg.wParam); // Выходим из программы
}
Результаты работы программы.
Заключение.
С помощью OpenGl была построена, и подвергнута преобразованиям искомая фигура.
Информация о работе Моделирование и визуализация трехмерного объекта сложной формы