Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики





НазваниеКафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики
страница6/6
Дата публикации15.12.2014
Размер0.71 Mb.
ТипИсследование
100-bal.ru > Информатика > Исследование
1   2   3   4   5   6

Ю.Тихомиров Программирование трехмерной графики - СПб.: БХВ , 2000 г.

  • М.Краснов OpenGL. Графика в проектах Delphi - СПб.: БХВ, 2000г.


  • Н.Томпсон Секреты программирования трехмерной графики - СПб.: Питер, 1997 г.

  • К. Уолнам Секреты программирования игр для Windows95 - СПб.: Питер, 1997 г.

  • А.Ла Мот, Д. Ратклифф, М. Семинаторе, Д. Тайлер Секреты программирования игр - СПб.: Питер, 1995 г.

  • Техническая документация с сайта http://www.scitechsoft.com

  • Техническая документация с сайта http://www.nvidia.com

  • Техническая документация с сайта http://www.aureal.com

    11. Карпенко С.М., Переверзева Н.А., Яговдик К.П., Сергей Я.В. Моделирование трехмерных сцен с использованием графической библиотеки OpenGL // Материалы V международной научной конференции / учреждение образования «Институт современных знаний» Гродненский филиал – Гродно, 2002г.

    Приложение 1. Исходный текс программы трассировки лучей
    #include

    #include

    #include

    #include

    #include
    #define VIEW_WIDTH ( M_PI / 3 ) // viewing angle ( 60 degrees )

    #define SCREEN_WIDTH 320 // size of rendering window

    #define SCREEN_HEIGHT 200

    // basic colors

    #define FLOOR_COLOR 8

    #define CEILING_COLOR 3

    #define WALL_COLOR 1

    // angles

    #define ANGLE_90 M_PI_2 // 90 degrees

    #define ANGLE_180 M_PI // 180 degrees

    #define ANGLE_270 (M_PI*1.5) // 270 degrees
    // bios key defintions

    #define ESC 0x011b

    #define UP 0x4800

    #define DOWN 0x5000

    #define LEFT 0x4b00

    #define RIGHT 0x4d00

    // labyrinth

    char * worldMap [] =

    {

    "****************************************************",

    "* * *",

    "* * * * * * * * * * ************************** *",

    "* * *",

    "* * * * * * * * * * * ************************ *",

    "* * *",

    "* * * * * * * * * * ************************** *",

    "* * *",

    "****************************************************"

    };
    float swing;

    float locX;

    float locY;

    float angle;

    long totalFrames = 0l;

    char far * screenPtr = (char far *) MK_FP ( 0xA000, 0 );

    float rayAngle [SCREEN_WIDTH]; // angles for rays from main viewing direction
    ////////////////////////// Functions ////////////////////////////////////
    void drawSpan ( float dist, char wallColor, int x )

    {

    char far * vptr = screenPtr + x;

    int h = dist >= 0.5 ? (int)(SCREEN_HEIGHT*0.5 / dist ) : SCREEN_HEIGHT;

    int j1 = ( SCREEN_HEIGHT - h ) / 2;

    int j2 = j1 + h;
    for ( int j = 0; j < j1; j++, vptr += 320 )

    * vptr = CEILING_COLOR;
    if ( j2 > SCREEN_HEIGHT )

    j2 = SCREEN_HEIGHT;
    for ( ; j < j2; j++, vptr += 320 )

    * vptr = wallColor;
    for ( ; j < SCREEN_HEIGHT; j++, vptr += 320 )

    * vptr = FLOOR_COLOR;

    }
    float checkVWalls ( float angle )

    {

    int xTile = (int) locX; // cell indices

    int yTile = (int) locY;

    float xIntercept; // intercept point

    float yIntercept;

    float xStep; // intercept steps

    float yStep;

    int dxTile;
    if ( fabs ( cos ( angle ) ) < 1e-7 )

    return 10000.0;
    if ( angle >= ANGLE_270 || angle <= ANGLE_90 )

    {

    xTile ++;

    xStep = 1;

    yStep = tan ( angle );

    xIntercept = xTile;

    dxTile = 1;

    }

    else

    {

    xTile --;

    xStep = -1;

    yStep = -tan ( angle );

    xIntercept = xTile + 1;

    dxTile = -1;

    }

    // find interception point

    yIntercept = locY + (xIntercept - locX) * tan ( angle );
    for ( ; ; )

    {

    yTile = yIntercept;

    if ( xTile < 0 || xTile > 52 || yTile < 0 || yTile > 9 )

    return 10000.0;
    if ( worldMap [yTile][xTile] != ' ' )

    return ( xIntercept - locX ) / cos ( angle );
    xIntercept += xStep;

    yIntercept += yStep;

    xTile += dxTile;

    }

    }
    float checkHWalls ( float angle )

    {

    int xTile = (int) locX;

    int yTile = (int) locY;

    float xIntercept;

    float yIntercept;

    float xStep;

    float yStep;

    int dyTile;
    if ( fabs ( sin ( angle ) ) < 1e-7 )

    return 10000.0;
    if ( angle <= ANGLE_180 )

    {

    yTile ++;

    xStep = 1 / tan ( angle );

    yStep = 1;

    yIntercept = yTile;

    dyTile = 1;

    }

    else

    {

    yTile --;

    yStep = -1;

    xStep = -1 / tan ( angle );

    yIntercept = yTile + 1;

    dyTile = -1;

    }
    xIntercept = locX + (yIntercept - locY) / tan ( angle );
    for ( ; ; )

    {

    xTile = xIntercept;

    if ( xTile < 0 || xTile > 52 || yTile < 0 || yTile > 9 )

    return 10000.0;
    if ( worldMap [yTile][xTile] != ' ' )

    return ( yIntercept - locY ) / sin ( angle );
    xIntercept += xStep;

    yIntercept += yStep;

    yTile += dyTile;

    }

    }
    void drawView ()

    {

    float phi;

    float distance;
    totalFrames++;

    for ( int col = 0; col < 320; col++ )

    {

    phi = angle + rayAngle [col];
    if ( phi < 0 )

    phi += 2 * M_PI;

    else

    if ( phi >= 2 * M_PI )

    phi -= 2 * M_PI;
    float d1 = checkVWalls ( phi );

    float d2 = checkHWalls ( phi );
    distance = d1;
    if ( d2 < distance )

    distance = d2;
    distance *= cos ( phi - angle ); // adjustment for fish-eye

    if (d2< d1)

    drawSpan ( distance, WALL_COLOR, col );

    else

    drawSpan ( distance, WALL_COLOR+1, col );

    }

    }
    void setVideoMode ( int mode )

    {

    asm {

    mov ax, mode

    int 10h

    }

    }
    void initTables ()

    {

    for ( int i = 0; i < SCREEN_WIDTH; i++ )

    rayAngle [i] = atan ( -swing + 2 * i * swing / ( SCREEN_WIDTH - 1 ) );

    }
    main ()

    {

    int done = 0;
    angle = 0;

    locX = 1.5;

    locY = 1.5;

    swing = tan ( VIEW_WIDTH / 2 );
    initTables ();

    setVideoMode ( 0x13 );
    int start = clock ();
    while ( !done )

    {

    drawView ();
    if ( bioskey ( 1 ) )

    {

    float vx = cos ( angle );

    float vy = sin ( angle );

    float x, y;
    switch ( bioskey ( 0 ) )

    {

    case LEFT:

    angle -= 5.0*M_PI/180.0;

    break;
    case RIGHT:

    angle += 5.0*M_PI/180.0;

    break;
    case UP:

    x = locX + 0.3 * vx;

    y = locY + 0.3 * vy;
    if ( worldMap [(int) y][(int) x] == ' ' )

    {

    locX = x;

    locY = y;

    }
    break;
    case DOWN:

    x = locX - 0.3 * vx;

    y = locY - 0.3 * vy;
    if ( worldMap [(int) y][(int) x ] == ' ' )

    {

    locX = x;

    locY = y;

    }
    break;
    case ESC:

    done = 1;

    }
    if ( angle < 0 )

    angle += 2 * M_PI;

    else

    if ( angle >= 2 * M_PI )

    angle -= 2 * M_PI;

    }

    }
    float totalTime = ( clock () - start ) / CLK_TCK;
    setVideoMode ( 0x03 );
    printf ( "\nFrames rendered : %ld", totalFrames );

    printf ( "\nTotal time ( sec ) : %7.2f", totalTime );

    printf ( "\nFPS : %7.2f", totalFrames / totalTime );

    }
    Приложение 2. Краткое руководство пользователя к 3D-движку
    1. Управление:
    ESC - меню

    Up - вперед

    Down - назад

    Left - стрейф влево

    Right- стрейф вправо

    ~ - консоль
    2. Специальные параметры настройки
    Редактировать нужно ТОЛЬКО Default.cfg или вводить с консоли.
    map <имя> - уровень, который будет грузиться, d .cfg при старте

    r_draw_fps <0,1> - отображение числа кадров

    r_draw_teleport <0,1> - отображение телепортов

    r_draw_stat <0,1> - отображение статистики

    r_console_blend <0,1> - прозрачность консоли

    r_menu_blend <0,1> - прозрачность меню

    r_dither <0,1> - OpenGL сглаживание

    r_wrap <0,1> - повторение текстуры

    r_texture_filter 3

    r_light_object <0,1> - свет на объектах

    r_light_wall <0,1> - свет на стенах

    r_blend_object <0,1> - прозрачные объекты

    r_chrome_object <0,1> - хромовые объекты

    r_chrome_wall <0,1> - хром на стенах

    r_view_distance xxx - дальность зрения

    volume_music <1,100> - громкость фоновой музыки

    Приложение 3. Слайды работы программ
























  • 1   2   3   4   5   6

    Похожие:

    Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconКонтрольная работа №1 Тема контрольной работы №1 Базовые основы компьютерной
    Области применения компьютерной графики; технические средства компьютерной графики: мониторы, графические адаптеры
    Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики icon«Юго-Западный государственный университет» (юзгу) Кафедра программного...
    Цель работы: Исследование развития криптографии и способов применения шифров в деятельности человека
    Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconРазработка и исследование интегрированных алгоритмов размещения элементов...
    Специальности: 05. 13. 12 – Системы автоматизации проектирования, 05. 13. 17 – Теоретические основы информатики
    Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconФакультет математики и информационных технологий Кафедра информатики и вычислительной техники
    Познакомить учащихся с планетами Солнечной системы, сформировать представление о них и о том, отчего на Земле сменяются день, ночь,...
    Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconУчитель математики, информатики и вычислительной техники Образование высшее Стаж работы
    Урок Правила техники безопасности. Повторение курса 8 класса (двоичная система)
    Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconПрограмма дисциплины Современные проблемы информатики и вычислительной...
    Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов направления подготовки 09....
    Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconРабочая программа по дисциплине В. В основы компьютерной графики
    Дисциплина «Основы компьютерной графики» является фундаментальной дисциплиной в подготовке бакалавра. Это одна из основных дисциплин...
    Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики icon«Наука компьютерной графики» Сазерленд и доктор Дэвид Эванс (David...
    После защиты диссертации на тему «Наука компьютерной графики» Сазерленд и доктор Дэвид Эванс (David Evans) открывают в университете...
    Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconЗадача изучения дисциплины освоить основные понятия компьютерной...
    Цель преподавания дисциплины – ознакомление студентов с основами компьютерной графики и графическими программами
    Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconЗадача изучения дисциплины освоить основные понятия компьютерной...
    Цель преподавания дисциплины – ознакомление студентов с основами компьютерной графики и графическими программами
    Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconИнформатика и вычислительная техника
    Аналитический обзор по курсу «Современные проблемы информатики и вычислительной техники»
    Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconКонтрольная работа выполняется в два этапа
    Составитель: Е. В. Моисеенко, доцент кафедры информатики, инженерной и компьютерной графики вгуэс
    Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconКонспект урока информатики и икт (с использованием технологии сдп...
    Тема "Использование вспомогательных алгоритмов для рисования орнаментов в исполнителе Чертежник"
    Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconПрограмма по формированию навыков безопасного поведения на дорогах...
    После защиты диссертации на тему «Наука компьютерной графики» Сазерленд и доктор Дэвид Эванс (David Evans) открывают в университете...
    Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconПрограмма по формированию навыков безопасного поведения на дорогах...
    После защиты диссертации на тему «Наука компьютерной графики» Сазерленд и доктор Дэвид Эванс (David Evans) открывают в университете...
    Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconКурсовая работа по дисциплине «Информатика и программирование»
    Кафедра «Программное обеспечение вычислительной техники и автоматизированных систем»


    Школьные материалы


    При копировании материала укажите ссылку © 2013
    контакты
    100-bal.ru
    Поиск