Sto scrivendo una libreria di forme 2D di base in Python (principalmente per manipolare i disegni SVG) e non riesco a calcolare in modo efficiente i punti di intersezione di due ellissi.Ricerca di punti di intersezione di due ellissi (Python)
Ogni ellisse è definita dalle seguenti variabili (tutti float):
c: center point (x, y)
hradius: "horizontal" radius
vradius: "vertical" radius
phi: rotation from coordinate system's x-axis to ellipse's horizontal axis
ignorando quando le ellissi sono identici, ci potrebbe essere da 0 a 4 punti di intersezione (intersezione, tangenti, parzialmente sovrapposti, parzialmente sovrapposti e internamente tangente e completamente sovrapposto).
ho trovato alcune soluzioni possibili:
- SymPy geometry module - Questo fondamentalmente solo tappi le equazioni ellisse in risolutore di SymPy. Non sono sicuro se questo abbia senso senza avere già il risolutore. (Per inciso, avrei usato SymPy invece di girare il mio, ma si comporta in modo orribile quando si tratta di galleggianti pazzi)
- How to detect if an ellipse intersects(collides with) a circle - Questo potrebbe essere probabilmente adattato per due ellissi, ma sono un po 'sfocato su come girarlo in un codice sensato.
- How Ellipse to Ellipse intersection? - La libreria dei riferimenti di risposta (CADEMIA) potrebbe avere un buon algoritmo, ma non riesco nemmeno a capire se è open source.
- Wikipedia: Intersecting Two Conics - Non ho abbastanza una comprensione di algebra lineare per comprendere questa soluzione.
Qualche suggerimento su come dovrei procedere per calcolare le intersezioni? Velocità (potrebbe essere necessario calcolare molte intersezioni) e l'eleganza è il criterio principale. Il codice sarebbe fantastico, ma anche una buona direzione per entrare sarebbe utile.
questo può essere ridotto nel risolvere due variabili equazioni di secondo grado – thkang
maggior parte delle soluzioni di ellisse-vs-cerchio non funziona per voi, perché in genere lo si fa per la parametrizzazione l'ellisse e poi solo scoprire dove la sua distanza dal centro del cerchio è uguale al raggio del cerchio. (Se conoscessi la fase giusta per parametrizzare le due ellissi in un attimo, potresti farle ... ma in cima alla mia testa, sospetto che non sia più facile che semplicemente intersecare le ellissi ...) – abarnert
Inoltre, penso che questo appartenga a http: //math.stackexchange.com anziché qui - e in effetti è una duplicazione di una domanda che è già stata migrata lì, http://math.stackexchange.com/questions/197982/calculate-intersection-of-two-ellipses – abarnert