Точки, строки и полигоны на сферах с [закрытым] C/C++

13
задан user1118321 15 March 2015 в 05:40
поделиться

3 ответа

Я предлагаю вам взглянуть на это:

http://www.codeguru.com/Cpp/Cpp/algorithms/general/article.php/c5115/

Вопрос 1E решает вашу проблема пересечения двух больших кругов. Отсюда вы можете определить основные операции ваших фигур на сфере без большой зависимости, такой как CGAL или GEOS.

1
ответ дан 2 December 2019 в 02:23
поделиться

Если вы хотите выполнить общую операцию с множеством полигонов, такую ​​как объединение / пересечение и т. Д., Вы можете заглянуть в общую библиотеку обрезки полигонов из http://www.cs.man.ac.uk/~toby/alan / software /

1
ответ дан 2 December 2019 в 02:23
поделиться

Для нахождения пересечения двух объектов обычно требуется задать уравнения, определяющие объекты, равными друг другу.

Вот один из способов, который, возможно, является просто другой формулировкой ответа Витора.

Начните с определения каждой линии (дуги) как параметрического уравнения. К лучшему или худшему, я вижу эти дуги как путь, который нормализованные векторы проходят при вращении. Вот как я их определяю (наверняка есть лучший способ).

Итак, я бы взял начальную и конечную точки, рассматривал их как векторы, взял бы их перекрестное произведение, чтобы получить ось вращения, и точечное произведение, чтобы получить угол.

Таким образом, мое уравнение для дуги будет выглядеть так

arc(t) = startPoint * (axisAngleToRotationMatrix (axis, t * angle))

Затем вы установите уравнения двух дуг равными друг другу и решите систему уравнений, которая получится, для "t" в каждом уравнении.

0
ответ дан 2 December 2019 в 02:23
поделиться