Форум программистов, компьютерный форум CyberForum.ru

Метод трассировки луча - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти непрерывную последовательность положительных чисел, сумма элементов которой максимальна http://www.cyberforum.ru/cpp/thread278968.html
Знайти таку нерозривну послыдовнысть позитивних чисел сума елементыв якый максимальна
C++ Заполнить матрицу линейной последовательностью от левого верхнего угла по диагонали вправо вверх Заполнить матрицу линейной последовательностью от левого верхнего угла по диагонали вправо -вверх http://www.cyberforum.ru/cpp/thread278965.html
Программирование алгоритмов циклической структуры C++
Найти сумму целых положительных чисел, больших 30 и меньших100, кратных трём и оканчивающихся на 2, 4 или 8.
C++ Паспорт HDD
Кто-нибудь знает можно ли написать программу на C++, которая читала бы паспорт жесткого диска и выводила информацию на экран?? Если можно, то подскажите как...
C++ Решение систем нелинейных уравнений http://www.cyberforum.ru/cpp/thread278700.html
Народ,помогите реализовать на c++ метод простых итераций для систем нелинейных уравнений: y-sqrt(x+1)=0, x^2-2*x+y^2-2*y=1езнаю послезавтра сдавать лабу а я прям незнаю как это сделать,подскажите блондинке пожалуйста=** С нетерпеньем жду ответа!
C++ Указать директорию Здравствуйте. Пишу программу в борланде 6, в которой надо указать путь, из которого программа будет брать фаилы. С помощью чего это можно сделать? Видел есть DirectoryListBox но как он работает, не могу понять. И ещё вопрос: С помощью чего можно узнать Адрес фаила? подробнее

Показать сообщение отдельно
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
20.04.2011, 08:13     Метод трассировки луча
Трассировка лучей к этой задаче не относится. Трассировка лучей - это расчёт хода световых лучей в 3D сцене. Тебе же нужен геометрический луч, отличающийся от светового луча тем, что он прямой всегда и не подвержен ни рефракции, ни отражению, ни поглощению. Это совсем другое понятие луча и другие алгоритмы. Геометрический луч есть полупрямая, он описывается уравнением прямой и неравенством. Я предлагаю взять параметрическое уравнение прямой, тогда лучь описывается так: http://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{cases}  x=x_0+k_x*t  \\   y=y_0+k_y*t  \\  t\geq 0 \end{cases}. Стороны прямоугольника - это отрезки, то есть тоже части прямых, они описываются так:
http://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{cases}  x=x_0+k_x*t  \\   y=y_0+k_y*t  \\  t\geq 0 \\  t\leq 1 \end{cases}.
Тогда для каждого отрезка получаем систему: http://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{cases}  x=xl_0+kl_x*tl  \\   y=yl_0+kl_y*tl  \\  x=xo_0+ko_x*to  \\   y=yo_0+ko_y*to  \\  to\geq 0 \\  tl\geq 0 \\  tl\leq 1 \end{cases}. Число точек должно быть не чётным, а для выпуклого многоугольника точка должна быть ровно одна, но если попадёшь в угол, то такая точка принадлежит двум отрезкам и может сосчитаться дважды. Придумай, как надёжно обработать углы.

Добавлено через 4 минуты
Можно ещё так: соединить точку со всеми вершинами и сложить углы между этими отрезками. Для внутренней точки должно получиться ровно http://www.cyberforum.ru/cgi-bin/latex.cgi?360^0, но там опять надо флоат сравнивать.

Добавлено через 3 минуты
Цитата Сообщение от stark91 Посмотреть сообщение
т.е если в многоугольнике допустим 10 вершин, то надо сделать 10 проверок на пересечение?
Конечно.
 
Текущее время: 04:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru