Domanda

Sto lavorando a un problema di geometria che richiede di trovare l'intersezione di due archi parabolici in qualsiasi rotazione. Sono stato in grado di intesitare una linea e un arco parabolico ruotando il piano per allineare l'arco con un asse, ma due parabole non possono entrambi allinearsi con un asse. Sto lavorando per ricavare le formule, ma vorrei sapere se esiste già una risorsa disponibile per questo.

È stato utile?

Soluzione

Definirei prima l'equazione per l'arco parabolico in 2D senza rotazioni:

  x(t) = ax² + bx + c
  y(t) = t;

Ora puoi applicare la rotazione creando una matrice di rotazione:

  s = sin(angle)
  c = cos(angle)

  matrix = | c -s |
           | s  c |

Applica quella matrice e otterrai l'equazione parametrica ruotata:

x' (t) = x(t) * c - s*t;
y' (t) = x(t) * s + c*t;

Questo ti darà due equazioni (per xey) dei tuoi archi parabolici.

Fallo per entrambi gli archi ruotati e sottrali. Questo ti dà un'equazione come questa:

  xa'(t) = rotated equation of arc1 in x
  ya'(t) = rotated equation of arc1 in y.
  xb'(t) = rotated equation of arc2 in x
  yb'(t) = rotated equation of arc2 in y.
  t1 = parametric value of arc1
  t2 = parametric value of arc2

  0 = xa'(t1) - xb'(t2)
  0 = ya'(t1) - yb'(t2)

Ognuna di queste equazioni è solo un polinomio di ordine 2. Sono facili da risolvere.

Per trovare i punti di intersezione risolvi l'equazione di cui sopra (ad es. trova le radici).

Otterrai fino a due radici per ciascun asse. Qualsiasi radice uguale su xey è un punto di intersezione tra le curve.

Ottenere la posizione ora è facile: basta collegare la radice all'equazione parametrica e puoi ottenere direttamente x e y.

Altri suggerimenti

Sfortunatamente, la risposta generale richiede la soluzione di un polinomio del quarto ordine. Se trasformiamo le coordinate in modo che una delle due parabole sia nella forma standard y = x ^ 2, allora la seconda parabola soddisfa (ax + by) ^ 2 + cx + dy + e == 0. Per trovare l'intersezione, risolverli entrambi contemporaneamente. Sostituendo in y = x ^ 2 vediamo che il risultato è un polinomio del quarto ordine: (ax + bx ^ 2) ^ 2 + cx + dx ^ 2 + e == 0. La soluzione di Nils quindi non funzionerà (il suo errore: ognuno è un polinomio del 2 ° ordine in ciascuna variabile separatamente, ma insieme non lo sono).

È facile se hai un CAS a portata di mano.

Vedi la soluzione in Mathematica.

Scegli una parabola e cambia le coordinate in modo che la sua equazione diventi y (x) = a x ^ 2 (forma normale).

L'altra parabola avrà la forma generale:

A x^2 + B x y + CC y^2 + DD x + EE y + F == 0 

where B^2-4 A C ==0 (so it's a parabola)  

Risolviamo un caso numerico:

p = {a -> 1, A -> 1, B -> 2, CC -> 1, DD -> 1, EE -> -1, F -> 1};
p1 = {ToRules@N@Reduce[
       (A x^2 + B x y + CC y^2 + DD x + EE y +F /. {y -> a x^2 } /. p) == 0, x]}

{{x - > -2.11769}, {x - > -,641445},     {x - > 0.379567- 0.76948 I},     {x - > 0.379567+ 0.76948 I}}

Tracciamolo:

Show[{
  Plot[a x^2 /. p, {x, -10, 10}, PlotRange -> {{-10, 10}, {-5, 5}}], 
  ContourPlot[(A x^2 + B x y + CC y^2 + DD x + EE y + F /. p) == 
    0, {x, -10, 10}, {y, -10, 10}],
  Graphics[{
    PointSize[Large], Pink, Point[{x, x^2} /. p /. p1[[1]]],
    PointSize[Large], Pink, Point[{x, x^2} /. p /. p1[[2]]]
    }]}]

inserisci qui la descrizione dell'immagine

La soluzione generale prevede il calcolo delle radici di:

4 A F + 4 A DD x + (4 A^2 + 4 a A EE) x^2 + 4 a A B x^3 + a^2 B^2 x^4 == 0  

Che è fatto facilmente in qualsiasi CAS.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top