Срочно ищу программу (курсовик горит): Программа "Прямой алгоритм трассировки лучей" Описание: 1 источник света и 1 препятствие источник точечный препятствие - линия координаты задаются и источника и препятствия вручную Задание: используя SSE рассчитать трассировку лучей Помогите пожалуйста!!!
Если под лучом понимать линию, проходящую через а(x,y) и b(x,y) (a - источник, b - точка препятствия), то вам необходимо всего лишь рассчитать коэффициенты A, B и C для уравнения линии. Затем, используя эти коэффициенты, найти точку c(x,y), лежащую в плоскости проецирования. Если самое пространство дескретно, то тут даже без FPU обойтись можно будет (тем более sse). Для упрощения можно точку и линию положить в одну плоскость и вычисления производить в этой плоскости A*xa+B*ya+C=0 и A*xb+B*yb+C=0, из которых найдете A, B и С если я правильно помню, то A=(yb-ya) B=(xa-xb) C=(xb*ya-xa*yb) далее в уравнение (yb-ya)*xc+(xa-xb)*yc+(xb*ya-xa*yb)=0 подставляете соответственно либо xc, либо yc и находите оставшееся Код (Text): (ya-yb)*xc+(xb*ya-xa*yb) (xa-xb)+(xb*ya-xa*yb) yc = ------------------------ xc = --------------------- (xa-xb) (ya-yb)
Так как луча у вас 2, на sse просто можно их сразу два и посчитать. z (для 3-хмерного пространства) найдете из уравнения A*xa+B*ya+C*za+D=0 (если посчитаете уравнение плоскости в которой лежат лучи)
Очень интересно. Но я чайник в асеме. Можете код набросать на коленке. Говорят не сложно же. И хотя бы среду посоветуйте где можно реализовать.
Вот как то так рассчитываем пересечение луча с прямой в 2D здесь p.x и p.y - начальные координаты луча v.x и v.y - единичный вектор t - длина луча, t2 - длина прямой с которой ищем пересечение луча. Для того чтобы найти координаты пересечения нужно найти где у луча и прямой совпадают x и y: В аттаче мое пересечение луча с прямой на FPU там правда и весьма коряво все но работает...
А на чем ты писал? (Среда программирования) И как сделать ввод своих координат? (препятствие и источника) И еще вопрос: я думал будет что то типа тени... А тут отражение... Если покороче прпятствие сделать- будет тень?
>А на чем ты писал? (Среда программирования) FASM >И как сделать ввод своих координат? (препятствие и источника) Как хочешь >И еще вопрос: я думал будет что то типа тени... А тут отражение... Если покороче прпятствие сделать- будет тень? Там просто перпендикуляры рисуются - нет там отражения И вообще это примитивный рассчет пересечения луча с прямой
Ага. Ясно. Ну уменя просто курсовик по теме SSE нужно сделать тестовую прогу длядемонстрации возмонжостей появившихся в SSE. И просто реализовать прямой алгоритм трассировки лучей. Я так понимаю - эта программа есть примитивная трассировка лучей. Прокатит наверно))) Спасибо еще раз. А вот возможно ли как то добавить ввод своих координат вручную. Кнопку там сделать? Или окно ввода? (Извините, я просто в FASM не работал и не знаю. В делфи то все проще. Кинул компонент на форму и все.)
Скачал Fasm отсюда. http://www.wasm.ru/toollist.php?list=7 -FASM 1.67.26 Чо то после компиляции на нем не запускается. Можт скините свой FASM? Пожалуйста!
http://flatassembler.net/download.php Вряд ли новая версия поможет конечно Наверное вся проблема в том что вы лишь скомпилировали - запускайте экзешник