Bonjour et merci d'avance pour votre attention (dont j'ai bien besoin !)
Je veux définir analytiquement le plus petit cercle tangent à deux courbes D1 et D2 et passant par un point Pt1 de la courbe D1.
Les courbes et le point sont connus (continues, dérivables). Les courbes pouvant être des droites, arc de cercle ou d'ellipse...
Le point Pt2 est un point de la courbe D2 (de pente a2).
Dans un premier temps, je considère deux droites( on commence doucement )
Le cercle recherché (de centre x,y) est porté par la perpendiculaire à D1 en Pt1
La seconde condition étant que la distance du centre du cercle à D1 et D2 est identique...
On est d'accord jusque là ?
Je me sers de ce que je connais (c'est à dire pas grand chose ! : ) ainsi que SYMPY et Solve (est-ce bien adapté ?)
eq1= Eq ((an*x+bn1,y))# équation normale à D1 en Pt1
avec an la pente de la normale à D1 et bn1 = ypt1-an*xpt1 où xpt1 et ypt2 coordonnées du point Pt1
Pour ce qui est de la seconde condition:
eq2= Eq ((y-ypt2-a2*(x-xpt2))/norme_a2-sqrt((x-xpt1)**2+(y-ypt1)**2))
y - ypt2 -a2*(x-xpt2) / norme_a2 étant la distance du point (x,y) à la droite D2 (produit vectoriel)
sqrt((x-xpt1)**2+(y-ypt1)**2 étant le rayon du cercle
puis:
1 2
| [eq1,eq2]
solution = solveset([eq1,eq2]) |
Mais SYMPY n'aime pas la mise en forme de mon système:
[CODE[Eq((-3.0303*x + 7.0909, y), 0), 1.4356*(Eq(-(x - 3.0)**2 - (y + 2.0)**2 + (0.66*x + y - 14.64)**2, 0))] is not a valid SymPy expression][/CODE]
Quelqu'un peut-il me dire comment dois-je présenter ce système ?
Comment puis-je prendre en compte la valeur absolue d'un produit vectoriel comportant des valeurs symboliques ?
J'ai déjà utilisé SYMPY pour trouver l'intersection d'une ellipse et d'une droite, ce qui en matière de non-linéarité est semblable à ce pb ... Non ?
Merci d'avance, il faut vraiment que je parvienne à automatiser ce calcul (y compris pour des cas plus compliqués comme ellipse / ellipse)
Partager