Qwertiy писал(а):Пересечение фигур не равносильно пересечению их границ.
Хакер писал(а):Пример не пересекающихся фигур с пересекающимися границами приведи.
Qwertiy писал(а):что есть случаи, когда границы не пересекаются, а фигуры пересекаются.
Хакер писал(а):Qwertiy писал(а):что есть случаи, когда границы не пересекаются, а фигуры пересекаются.
Ну тогда пример вот этого.
Хакер писал(а):Кому-то будет подарок:
Смотреть надо модуль modAlgo, там сам алгоритм — определение пересечения, всё остальное — обвес для возможности рисовать фигуры в окне. Алгоритм устойчив к самопересекающимся многоугольникам.
Хакер писал(а):В любом случае это решается просто тем, что код, определяющий пересечений граней меняется на код, определяющий пересечение кривых.
Proxy писал(а):Или представить дуги как ломаные перед проверкой пересечений.
Из этого я например понял только про окружности с радиусом и центром и про дуги им соответствующие. Нет я конечно знаю, что такое кривая Безье, точнее как она выглядит на практике, потому как она часто применяется в графических редакторах, в том эе Photoshop и Corel , но какими она обладает математическими свойствами даже не представляю, а про NURBS-кривые, я вообще первый раз слышуХакер писал(а):Это кривые Безье? Если да, то какой степени? Или может быть это NURBS-кривые? Или дуги, являющиеся дугами окружности с заданным радиусом и центром?
Хакер писал(а):Дуги чем представлены?
Как я должен учитывать это, если ты ничего не сказал? Это кривые Безье?
Хакер писал(а):В любом случае это решается просто тем, что код, определяющий пересечений граней меняется на код, определяющий пересечение кривых.
Хакер писал(а):Это ужасный путь. Он не только ошибко-опасный (неточный), но ещё и очень малопроизводительный, потому что будет много отрезков, и все возможные пары нужно проверить на пересечение.
Хакер писал(а):Если ты разобьёшь две кривых на 50 частей каждую, тебе потребуется сделать 50×50 проверок на пересечение отрезков. А если не разобьёшь — один раз решить не очень сложную систему уравнений.
Proxy писал(а):А если дуга - исключительная ситуация в модели и её достаточно разбить всего на 3-4 отрезка (смотря какая ситуация)
Хакер писал(а):С дугами окружности вообще простота.
Хакер писал(а):Будет 9—16 раз решаться СЛАУ.
Proxy писал(а):Хакер писал(а):Это ужасный путь. Он не только ошибко-опасный (неточный), но ещё и очень малопроизводительный, потому что будет много отрезков, и все возможные пары нужно проверить на пересечение.
Пригодность зависит от цели, на него возложенные...
Proxy писал(а):Вообще кривая Безье гораздо универсальнее.
Хакер писал(а):Нет, ими, например, нельзя «выразить» те же дуги окружности
Хакер писал(а):Вот я когда увидел твои опорные точки, устно определил, что вершина такого кубического Безье-сплайна пройдёт в Математическая формула: \frac{3}{4}R от центра на окружности.
Proxy писал(а):опорные:
(-R;0)
(R;0)
Направляющие:
(-R; 1,(3)4 * R)
(R; 1,(3)4 * R)
ещё пара направляющих:
(-R; -1,(3)4 * R)
(R; -1,(3)4 * R)
Хакер писал(а):P.S. Ну и напоследок: представить дугу окружности с помощью сплайна Безье невозможно, это математически достоверный факт.
Debugger писал(а):Это аппроксимация. Можно любую кривую аппроксимировать, например, ломаной. А вот выразить - нельзя.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3