![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 | |
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
![]()
Добрый день. Нашел наиболее понятный простому смертному алгоритм для определения пересечения линии и полигона в пространстве.
Цитата:
Возник один вопрос, пока я еще не начал реализацию. Во время расчетов значения углов скорее всего будут округлятся при cos acos, sqrt(Стандарт IEEE 754). Возникает вероятность того, что в итоге может не получится ровно 360(cos acos, корень), а проверки типа 359<x<361 могут повлечь за собой ошибки(баги). Как поступать в ситуациях такого рода? |
|
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
![]()
Решение.
Первое и очевидное это то, что угол не получится больше 360, поэтому можно проверять так x >=360 Второе. Точно учитывать погрешность не получится т.к. это IEEE 754. Можно умножить 360(2pi) на коэффициент, например 0.9999. Спасает от маленьких неточностей. ИТОГО: условие нужно делать так. if (angle >= 2*pi*0.9999). |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
метод contains для полигона | LBlonde | Общие вопросы по Java, Java SE, Kotlin | 0 | 08.03.2012 15:52 |
проверить линии на пересечение | HoBu4eK | Общие вопросы Delphi | 2 | 26.01.2012 18:18 |
Копирование полигона | Николая Ленин | Общие вопросы Delphi | 5 | 04.06.2011 22:07 |
Поворот полигона | Николая Ленин | Общие вопросы Delphi | 9 | 02.06.2011 23:05 |
площадь полигона | boomeer | Помощь студентам | 5 | 17.10.2010 14:17 |