Pregunta

Actualmente estoy portar mi solicitud jruby / Java2D Graph Drawing / Layouting a MacRuby / cacao. Por lo tanto necesito para obtener el punto de intersección NSBezierPath abierta con un NSBezierPath cerrado.

En Java2D que utiliza el siguiente truco. I aplané ambos caminos y no un simple análisis de intersección de líneas para cada segmento.

Entonces, ¿hay una forma sencilla de convertir un NSBezierPath a un montón de líneas rectas?

Mi algoritmo actual simplemente camina la línea (de un modo de búsqueda binaria) hasta que encuentre un NSPoint para los que containsPoint es cierto. Pero sólo funciona para las líneas rectas. La que he implementado en Java2D trabajó para trayectorias curvas también.

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

Gráfico

¿Fue útil?

Solución

  

Entonces, ¿hay una forma sencilla de convertir un NSBezierPath a un montón de líneas rectas?

Enviar la ruta de un mensaje bezierPathByFlatteningPath. Esto devolverá un nuevo camino, por lo que convertido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top