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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Паспорт HDD http://www.cyberforum.ru/cpp/thread278914.html
Кто-нибудь знает можно ли написать программу на C++, которая читала бы паспорт жесткого диска и выводила информацию на экран?? Если можно, то подскажите как...
C++ Указать директорию Здравствуйте. Пишу программу в борланде 6, в которой надо указать путь, из которого программа будет брать фаилы. С помощью чего это можно сделать? Видел есть DirectoryListBox но как он работает, не могу понять. И ещё вопрос: С помощью чего можно узнать Адрес фаила? http://www.cyberforum.ru/cpp/thread278512.html
Указатель this C++
как в windows Forms // горячую клавишу?
Лексический анализатор C++
есть задание: Входной язык содержит последовательность описаний массивов в соответствии со спецификацией языка Паскаль, разделенных символом ; (точка с запятой). Считать, что массивы могут содержать только элементы скалярных типов integer, real, byte, word и char. в принципе, трудностей, как его реализовывать, нет. считываем слово, сравниваем со словарем, и в зависимости от результата...
C++ Универсальный интерфейс для ввода http://www.cyberforum.ru/cpp/thread277467.html
Написать библиотеку, с помощью которой можно легко организовать интерфейс через командную строку для своей разработки. Данная задача не предусматривает организации псевдографического оконного интерфейса. Весь ввод-вывод с консоли. Но должна быть возможность организовать меню, а так же встроенный контроль типов вводимых данных. Библиотека нужна самописная, не из стандартых.
C++ Как лучше делать командную строку? Задача обеспечить текстовый ввод с клавы не только значений переменных, но и команд. В гуях обычно делаются меню и экранные кнопки, а я хочу, чтоб в моей приладе можно было юзить текстовый ввод вместо меню. Вопрос не в том, как это сделать вообще, я могу написать кучу ифов. Вопрос именно в том, как это сделать лучше. подробнее

Показать сообщение отдельно
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 проверок на пересечение?
Конечно.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru