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.

Règles du forum
Pour toute demande d'aide pour la conception (ou la confirmation d'un code) d'une figure Asymptote, c'est ici.

J'invite ceux qui ont régulièrement des questions à poser à aller dans leur panneau de l'utilisateur pour indiquer dans la signature de leurs messages :

  1. Nom du système d'exploitation (W7 ou Ubuntu 12.04 ou ...)
  2. Version d'Asymptote et éditeur utilisé pour les figures Asymptote
  3. Distribution LaTeX et éditeur utilisé pour les tex.


On va gagner du temps dans les réponses !
Hippyom
Messages : 39
Enregistré le : jeu. 8 avr. 2010, 08:57
Localisation : Poitiers

Distance entre un point et une conique

Message non lu par 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.

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1434
Enregistré le : dim. 7 mars 2010, 14:50

Re: Distance entre un point et une conique

Message non lu par 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://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 31/03/19) :
PC n°1 :Windows 10 - Asymptote(2.66)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
Mes autres PC : Ubuntu 18.04LTS - Asymptote(2.66-?? git) + TexLive2018
Mon serveur : Debian Jessie - Asymptote(2.66-? git) + TexLive2018
Merci de préciser la votre !

Hippyom
Messages : 39
Enregistré le : jeu. 8 avr. 2010, 08:57
Localisation : Poitiers

Re: Distance entre un point et une conique

Message non lu par 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 4711 fois
Y.M.

Hippyom
Messages : 39
Enregistré le : jeu. 8 avr. 2010, 08:57
Localisation : Poitiers

Re: Distance entre un point et une conique

Message non lu par Hippyom » ven. 7 mai 2010, 16:32

C'est quand même très bizarre comme courbe... :?
Y.M.

OG
V.I.P.
V.I.P.
Messages : 142
Enregistré le : dim. 7 mars 2010, 22:27

Re: Distance entre un point et une conique

Message non lu par 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

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1434
Enregistré le : dim. 7 mars 2010, 14:50

Re: Distance entre un point et une conique

Message non lu par 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://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 31/03/19) :
PC n°1 :Windows 10 - Asymptote(2.66)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
Mes autres PC : Ubuntu 18.04LTS - Asymptote(2.66-?? git) + TexLive2018
Mon serveur : Debian Jessie - Asymptote(2.66-? git) + TexLive2018
Merci de préciser la votre !

Francky
Messages : 40
Enregistré le : sam. 10 avr. 2010, 22:15
Localisation : Sud-Drôme

Re: Distance entre un point et une conique

Message non lu par 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é.
Modifié en dernier par Francky le sam. 8 mai 2010, 11:52, modifié 2 fois.

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1434
Enregistré le : dim. 7 mars 2010, 14:50

Re: Distance entre un point et une conique

Message non lu par 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://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 31/03/19) :
PC n°1 :Windows 10 - Asymptote(2.66)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
Mes autres PC : Ubuntu 18.04LTS - Asymptote(2.66-?? git) + TexLive2018
Mon serveur : Debian Jessie - Asymptote(2.66-? git) + TexLive2018
Merci de préciser la votre !

Hippyom
Messages : 39
Enregistré le : jeu. 8 avr. 2010, 08:57
Localisation : Poitiers

Re: Distance entre un point et une conique

Message non lu par 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.

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1434
Enregistré le : dim. 7 mars 2010, 14:50

Re: Distance entre un point et une conique

Message non lu par 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://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 31/03/19) :
PC n°1 :Windows 10 - Asymptote(2.66)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
Mes autres PC : Ubuntu 18.04LTS - Asymptote(2.66-?? git) + TexLive2018
Mon serveur : Debian Jessie - Asymptote(2.66-? git) + TexLive2018
Merci de préciser la votre !

Répondre