![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 10.01.2011
Сообщений: 5
|
![]()
Всем доброго времени суток.
Взялись с преподавателем за OpenGL с целью немного подучится. Решаем такую задачку: В некотором ограниченном пространстве находиться биологический материал, определенной толщины, и длины. Его атакуют определенное количество фотонов. Фотоны проходят определенный путь до столкновения с материалом. При столкновении текущего фотона с материалом возможны три исхода: 3) Фотон поглотился материалом. Здесь действие с текущим фотоном закончено. Приступаем к следующему. 2) Фотон прошел сквозь материал. Условие того, что фотон прошел сквозь материал, это то, что он прошел через всю толщину, и не поглотился, и не отразился. 1) Фотон отразился. В первом пункте самое интересное. Фотон считается отраженным если его координата X приняла отрицательное значение, в противоположном случае фотон считается оставшимся на материале. Для него рассчитывается новый угол движения, и новые координаты X и Y, и снова спрашивают, фотон поглощен материалом, или отражен, или прошел сквозь него. Т.е. Как только фотон попал на материал, мы гоняем его там, пока с ним не произойдет один из исходов. На протяжении того как фотоны бьются об материал подсчитываются коэффициенты: Отражения, Поглощения, Пропускания. Вот код решения этой задачи математически. Я его весь прокомментировал. http://pastebin.ru/QFWTQlkF В математическое решение не входит перерасчет новой координаты Y т.к. нам она не нужна. Она нужна при рисовании фотона в OpenGL. Этот пересчет есть в этой блок схеме: http://postimage.org/image/3n1k5ks6f/ Внимание блок схема огромная ~800х3000. Блок схема к реализации которой движемся. На данный момент написали код который отрисовывает фотон летящий начальное расстояние до материала. Вариант 1: http://pastebin.ru/7dt0mqBe Вариант 2: http://pastebin.ru/oLdBzX5A Второй вариант написали сегодня. Считаем его более удачным, но из за функции glutIdleFunc движение объекта начинает постепенно притормаживать, как будто идет переполнение "стека", и процессор сильно загружается. Основные вопросы которые сей час решаем, это организация анимации движения объекта в ортогональной проекции, и как можно перерисовать объект передав ему нужные параметры. Рассматриваю вариант, что бы реализовать данную задачу используя Объекты. Создать сцену и на нее выводить объекты. Возможно ли?. Подскажите кто, что сможет. Последний раз редактировалось MiraJe; 29.03.2012 в 18:34. |
![]() |
![]() |
![]() |
#2 | |
Форумчанин
Регистрация: 03.11.2011
Сообщений: 230
|
![]() Цитата:
С некоторыми правками. Уберем кирпичи. Поставим источник направленной генерации шариков(фотонов) – источник света. Площадка будет играть роль материала. Условием пропускания / отражения сквозь площадку как раз и будут свойства материала которые, вы в условии можете задать. glOrtho – ортогональная перспектива. |
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 10.01.2011
Сообщений: 5
|
![]()
Разобрались с преподавателем, и дописали программу. Кому интересно можете взглянуть Releze 5.4
Я подробно расписал код программы. Новичкам в OpenGL должно быть полезно прочитать опираясь на готовый пример. Подробно расписанный код PS В коде использованы функции характерные для Linux это system(). Эту функцию я использовал для очистки информации в консоли. В программе значения использованы очень малы. Если поиграться со значением переменных таких как L может быть интересный результат. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Обучение (C++) | MaximEvent | Помощь студентам | 4 | 19.12.2011 20:38 |
Обучение в Интернете | refrigerator | Свободное общение | 8 | 03.03.2011 21:06 |
Обучение языку | SlideSide | Помощь студентам | 2 | 07.01.2011 23:27 |
обучение программированию на С++ | ArniLand | Общие вопросы C/C++ | 3 | 12.04.2010 05:01 |
Обучение Паскаль | indig0 | Свободное общение | 5 | 06.05.2009 17:02 |