Distance entre un point et une conique

Pour toute demande d'aide sur des exemples non finalisés, c'est ici.
Les exemples aboutis et intéressants seront ajoutés aux sous-forums qui suivent.

Distance entre un point et une conique

Messagepar Hippyom » Ven 7 Mai 2010, 14:06

Bonjour,
je souhaite déterminer la distance entre une conique (tracée à partir de 5 points en passant par la commande "conic" de geometry.asy) et un point P que j'ai défini comme l'origine de mon repère.
Plus précisément je souhaite trouver le point de la conique qui est le plus proche du point P.
Je n'ai trouvé dans l'extension geometry que la commande : "distance(point, line)" (qui ne fonctionne donc pas dans mon cas :? ) et je n'ai rien trouvé dans la doc. officielle d'Asymptote. Faut-il alors que je passe par l'équation de la conique ?
Si quelqu'un sait comment faire, merci. ;)
Y.M.
Hippyom
 
Messages: 39
Inscription: Jeu 8 Avr 2010, 08:57
Localisation: Poitiers

Re: Distance entre un point et une conique

Messagepar GM » Ven 7 Mai 2010, 15:41

Hippyom a écrit:Bonjour,
je souhaite déterminer la distance entre une conique (tracée à partir de 5 points en passant par la commande "conic" de geometry.asy) et un point P que j'ai défini comme l'origine de mon repère.
Plus précisément je souhaite trouver le point de la conique qui est le plus proche du point P.
Je n'ai trouvé dans l'extension geometry que la commande : "distance(point, line)" (qui ne fonctionne donc pas dans mon cas :? ) et je n'ai rien trouvé dans la doc. officielle d'Asymptote. Faut-il alors que je passe par l'équation de la conique ?
Si quelqu'un sait comment faire, merci. ;)

Je ne sais pas faire dans l'instant mais c'est un sujet intéressant.
Pour n'importe quel cas de conique ? Ou pour une conique d'un type donné ?
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://gmaths.net/asy/index/?filtre=arc triple
Avatar de l’utilisateur
GM
Administrateur du site
Administrateur du site
 
Messages: 627
Inscription: Dim 7 Mar 2010, 14:50

Re: Distance entre un point et une conique

Messagepar Hippyom » Ven 7 Mai 2010, 16:18

Et bien je pensais obtenir une hyperbole mais cela n'y ressemble pas vraiment.
Les points sont issus d'un tracé effectué à la main donc ne sont pas précis (et d'ailleurs je ne suis même pas sûr que la courbe soit exactement une conique à la base).
Mais j'obtiens le tracé suivant :
conique_point.png
conique_point.png (8.54 Kio) Vu 205 fois
Y.M.
Hippyom
 
Messages: 39
Inscription: Jeu 8 Avr 2010, 08:57
Localisation: Poitiers

Re: Distance entre un point et une conique

Messagepar Hippyom » Ven 7 Mai 2010, 16:32

C'est quand même très bizarre comme courbe... :?
Y.M.
Hippyom
 
Messages: 39
Inscription: Jeu 8 Avr 2010, 08:57
Localisation: Poitiers

Re: Distance entre un point et une conique

Messagepar OG » Ven 7 Mai 2010, 20:53

Bonsoir

Oui la courbe est bizarre. Pourrais-tu donner le code qui mène à ce dessin ?
Comme tes points sont lus à la main/avec les yeux, quel est l'origine du problème ?

Enfin pour la distance d'un point à une conique, ce n'est pas implémenté dans geometry.asy.
Les coniques est vraiment le sujet que je ne pratique plus depuis des lustres, mais déjà
y-a-t-il une méthode mathématique (même si elle mène à la résolution d'équation
polynomiale de degré élevé) qui fasse le boulot ?

O.G. nul en conique
OG
V.I.P.
V.I.P.
 
Messages: 108
Inscription: Dim 7 Mar 2010, 22:27

Re: Distance entre un point et une conique

Messagepar GM » Ven 7 Mai 2010, 21:54

Je voulais bien aider... mais il faut être sûr de chercher dans la bonne direction.
Et là, avec ta figure... on est plus que tenté d'attendre que tu nous précises ton code... car pour une conique, c'est original :mrgreen:

Tu as cherché à pousser l'extension de Philippe dans ses retranchements ? :lol:

Une suggestion supplémentaire :
Code: Tout sélectionner
write(conictype( LaBqeDeTaDroleDeConique));
Cela devrait renvoyer "ellipse", "parabola", "hyperbola" ou "degenerated".

Pour ceux qui liront sans comprendre bqe :
bqe signifie 'bivariate quartic equation, c'est à la fois :
  • un type dont la structure est :
    Code: Tout sélectionner
    coordsys coordsys
    real[] a
    avec a tableau des 6 coefficients tels que :
    a[0]x^2+a[1]xy+a[2]y^2+a[3]x+a[4]y+a[0]=0
  • une fonction :
    Code: Tout sélectionner
    bqe(coordsys R=currentcoordsys,real a,real b,real c,real d,real e,real f)
    qui retourne un objet de type bqe représentant l'équation
    ax^2 + bxy + cy^2 + dx + ey + f = 0, relativement au repère R.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://gmaths.net/asy/index/?filtre=arc triple
Avatar de l’utilisateur
GM
Administrateur du site
Administrateur du site
 
Messages: 627
Inscription: Dim 7 Mar 2010, 14:50

Re: Distance entre un point et une conique

Messagepar Francky » Sam 8 Mai 2010, 09:27

Une piste à suivre :
Pour une conique : ax^2+2bxy+cy^2+2dx+2ey+f=0~, (attention, il y a volontairement des 2 ici !)
l'équation de la tangente en (x_0;y_0) est : axx_0+b(xy_0+yx_0)+cyy_0+d(x+x_0)+e(y+y_0)+f=0 EDIT : corrigé
dont on trouve le vecteur normal \vect{N}(x_0;y_0)=(ax_0+by_0+d;bx_0+cy_0+e).

Le point P(p;q) le plus proche de ta conique est M(x;y) qui vérifie le système d'équation :
1) M est sur ta conique : axx_0+b(xy_0+yx_0)+cyy_0+d(x+x_0)+e(y+y_0)+f=0
2) \vect{PM} est colinéaire à \vect{N} : (x-p)(bx+cy+e)=(y-q)(ax+by+d)
avec XCAS, ça doit le faire easy.

Tu trouves en fait les extrema locaux, a priori deux solutions,
une simple comparaison et c'est fini.
Je vais essayer de mon côté.
Dernière édition par Francky le Sam 8 Mai 2010, 11:52, édité 2 fois.
Francky
 
Messages: 40
Inscription: Sam 10 Avr 2010, 22:15
Localisation: Sud-Drôme

Re: Distance entre un point et une conique

Messagepar GM » Sam 8 Mai 2010, 10:09

Francky a écrit:l'équation de la tangente en (x_0;y_0) est : axx_0+b(xx_0+yy_0)+d(x+x_0)+e(y+y_0)+f=0 (à vérifier, c'est de mémoire)

Ce ne serait pas plutôt l'équation suivante ?
\boxed{axx_0+b(xy_0+x_0y)+cyy_0+d(x+x_0)+e(y+y_0)+f=0}

Attention : un terme en plus... mais aussi une inversion de lettres.

... et un vecteur normal à la tangente à la conique en M(x_0 ; y_0) est
\boxed{\vect{n}\left(ax_0+by_0+d \ ; \ bx_0+cy_0+e\right)}


Pour l'exemple suivant, je n'ai pas utilisé la fonction tangente de l'extension geometry, j'ai demandé le tracé de
Code: Tout sélectionner
line(  a*x0+b*y0+d  ,  b*x0+c*y0+e  ,  d*x0+e*y0+f  )

Figure asymptote 157b6e927c3da2aeba1ea8eda465dda4
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import geometry;
  2. size(200);
  3. show(currentcoordsys,dotpen=invisible);
  4. point pA=(4,0), pB=(0,2), pC=(-4,0), pD=(0,-2), pE=(3,1);
  5. conic co=conic(pA,pB,pC,pD,pE);
  6. bqe bqec=equation(co);
  7.  
  8. real x0=pB.x,
  9. y0=pB.y;
  10. real a=bqec.a[0],
  11. b=bqec.a[1]/2,
  12. c=bqec.a[2],
  13. d=bqec.a[3]/2,
  14. e=bqec.a[4]/2,
  15. f=bqec.a[5];
  16.  
  17. dot(pA^^pB^^pC^^pD^^pE,5bp+blue);
  18. draw(co,.8bp+.8green);
  19. draw(line(a*x0+b*y0+d,b*x0+c*y0+e,d*x0+e*y0+f),red);
  20.  
  21. addMargins(20,20);
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://gmaths.net/asy/index/?filtre=arc triple
Avatar de l’utilisateur
GM
Administrateur du site
Administrateur du site
 
Messages: 627
Inscription: Dim 7 Mar 2010, 14:50

Re: Distance entre un point et une conique

Messagepar Hippyom » Lun 10 Mai 2010, 09:07

Désolé d'avoir mis 2 jours à répondre.
Tout d'abord voici le code correspondant au dessin :

Code: Tout sélectionner
import geometry;
input("parametres_du_cadran.txt", check=true, comment="#");

size(5cm,0);

file fich=input("parametres_du_cadran.txt");

real[] tab=fich; // On stocke l'ensemble des valeurs dans le tableau tab
real Phi=tab[0]; // la première valeur correspond à la latitude géographique

coordsys R=cartesiansystem((tab[1],tab[2]), i=(1,0), j=(0,1));

point o=point(R,(tab[1],tab[2])/R);
point p1=point(R,(tab[3],tab[4])/R);
point p2=point(R,(tab[5],tab[6])/R);
point p3=point(R,(tab[7],tab[8])/R);
point p4=point(R,(tab[9],tab[10])/R);
point p5=point(R,(tab[11],tab[12])/R);

conic co=conic (p1,p2,p3,p4,p5);
draw(co);
dot(p1, green);
dot(p2, green);
dot(p3, green);
dot(p4, green);
dot(p5, green);
dot(o,blue);

Ensuite, pour répondre à OG, ces points sont issus du relevé effectué sur un cadran solaire sur une journée. Ce tracé est une ellipse, une hyperbole, une parabole ou un cercle notamment selon le lieu.
J'ai rentré manuellement les coordonnées des points (en nombre de pts) dans un fichier.txt que je lis via la commande input car c'est le seul moyen que j'ai trouvé pour récupérer ces points depuis l'image scannée du tracé. J'ai préalablement essayé pstoedit pour récupérer directement les coordonnées des points mais comme ils n'étaient justement pas considérés comme des points par Asymptote c'était assez compliqué.

GM a écrit:Une suggestion supplémentaire :
Code: Tout sélectionner
write(conictype( LaBqeDeTaDroleDeConique));
Cela devrait renvoyer "ellipse", "parabola", "hyperbola" ou "degenerated".

Apparement c'est une ellipse :D

En tout cas merci pour vos réponses, je vais tâcher d'utiliser vos indications à bon escient et me pencher sur l'équation de la conique ;)
Y.M.
Hippyom
 
Messages: 39
Inscription: Jeu 8 Avr 2010, 08:57
Localisation: Poitiers

Re: Distance entre un point et une conique

Messagepar GM » Lun 10 Mai 2010, 11:30

Hippyom a écrit:Tout d'abord voici le code correspondant au dessin.

Oui mais ce que l'on aimerait, ce sont les 5 pairs... qui donnent cette jolie "ellip... atatoïde". :mrgreen:.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://gmaths.net/asy/index/?filtre=arc triple
Avatar de l’utilisateur
GM
Administrateur du site
Administrateur du site
 
Messages: 627
Inscription: Dim 7 Mar 2010, 14:50

Suivante

Retourner vers Les demandes d'aide

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron