В настоящее время я переношу приложение jruby/java2d Graph Drawing/Layouting в macruby/какао. Поэтому мне нужно получить точку пересечения открытого NSBezierPath с закрытым NSBezierPath.NSBezierPath/Line Пересечение/сглаживание
В java2d Я использовал следующий трюк. Я сплющил оба пути и провел простой тест пересечения линий для каждого сегмента.
Итак, есть простой способ конвертировать NSBezierPath в связку прямых линий?
Мой текущий алгоритм просто проходит линию (по пути двоичного поиска), пока не найду NSPoint, для которого containsPoint является true. Но он работает только для прямых линий. Тот, который я реализовал в java2d, тоже работал для искривленных путей.
def getIntersection edge, path
out = edge.source
ins = edge.target
until (out.dist(ins) < 1.0)
mid = out + ((ins - out) * 0.5)
if (path.containsPoint (NSMakePoint(mid.x, mid.y)))
ins = mid
else
out = mid
end
end
return out
end
Graph http://i28.tinypic.com/168zs03.png
Спасибо, что не дал мне RTFM, которого я явно заслужил. – thestoneage