Хакер писал(а):Proxy писал(а):Или представить дуги как ломаные перед проверкой пересечений.
Это ужасный путь. Он не только ошибко-опасный (неточный), но ещё и очень малопроизводительный, потому что будет много отрезков, и все возможные пары нужно проверить на пересечение.
Н-да. Пришлось воспользоваться этим ужасным путем. К сожалению, не потянул пока переделку кода на учет дуг в полигонах. (
Для практики, вроде проходит. Благодаря тому, что начинается проверка с проверки пересечния габаритных прямоугольников...
Но написать хотел не об этом.
Вставил для пробы предложенные исходники "как есть" в свою программу, рисующую и выращивающюю проводники печатной платы в SolidWorks (SW).
При проверке пересечения контуров проводников (а пересеченные контуры SW не выращивает) координаты точек из типа Double конвертируются в Single. Вот тут, подумал, и засада. Что видно из скриншота. Значения равны, а результат не верный.
(Как вставить картинку в текст, не разобрался)
Заменил в коде все Single на Double. Вроде сработало, но в другом месте опять появился неправильный результат.
На скриншотах показал и свое решение.
Это проблема VB6. А не кода. Но решил написать о ней, для полноты картины.
Хакер, большое спасибо за исходники.