Question

Je travaille sur un problème de géométrie qui nécessite de trouver l'intersection de deux arcs paraboliques dans n'importe quelle rotation. J'ai été en mesure d'intégrer une ligne et un arc parabolique en faisant pivoter le plan pour aligner l'arc avec un axe, mais deux paraboles ne peuvent pas être alignées sur un axe. Je travaille sur l’élaboration des formules, mais j’aimerais savoir s’il existe déjà une ressource pour cela.

Était-ce utile?

La solution

Je définirais d'abord l'équation de l'arc parabolique en 2D sans rotation:

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

Vous pouvez maintenant appliquer la rotation en construisant une matrice de rotation:

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

  matrix = | c -s |
           | s  c |

Appliquez cette matrice pour obtenir l'équation paramétrique pivotée:

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

Cela vous donnera deux équations (pour x et y) de vos arcs paraboliques.

Faites cela pour vos deux arcs en rotation et soustrayez-les. Cela vous donne une équation comme celle-ci:

  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)

Chacune de ces équations est juste un polynôme d'ordre 2. Celles-ci sont faciles à résoudre.

Pour trouver les points d'intersection, résolvez l'équation ci-dessus (par exemple, recherchez les racines).

Vous obtiendrez deux racines pour chaque axe. Toute racine égale sur x et y est un point d'intersection entre les courbes.

Obtenir la position est facile maintenant: il suffit de connecter la racine à votre équation paramétrique pour obtenir directement x et y.

Autres conseils

Malheureusement, la réponse générale nécessite la solution d’un polynôme de quatrième ordre. Si nous transformons les coordonnées de manière à ce que l’une des deux paraboles soit sous la forme standard y = x ^ 2, alors la deuxième parabole vérifie (ax + par) ^ 2 + cx + dy + e == 0. Pour trouver l'intersection, résolvez les deux simultanément. En substituant dans y = x ^ 2, nous voyons que le résultat est un polynôme du quatrième ordre: (ax + bx ^ 2) ^ 2 + cx + dx ^ 2 + e == 0. La solution de Nils ne fonctionnera donc pas (son erreur: chacun est un polynôme du second ordre dans chaque variable séparément, mais ensemble, ils ne le sont pas).

C'est facile si vous avez un SAE à portée de main.

Voir la solution dans Mathematica.

Choisissez une parabole et changez les coordonnées pour que son équation devienne y (x) = a x ^ 2 (forme normale).

L'autre parabole aura la forme générale suivante:

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)  

Résoudons un cas numérique:

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 - > -0,641445},     {x - > 0,379567- 0,76948 I},     {x - > 0,379567+ 0,76948 I}}

Soit le tracé:

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]]]
    }]}]

entrer la description de l'image ici

La solution générale consiste à calculer les racines de:

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  

Ce qui se fait facilement dans n'importe quel CAS.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top