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

Re: Distance entre un point et une conique

Message non lu par Hippyom » lun. 10 mai 2010, 12:18

O(270, -1)
P1(39, -246), P2(88, -291), P3(142, -342), P4(200, -398), P5(261, -463)
Voici les coordonnées des points dans le repère par défaut d'Asymptote. Ce sont les valeurs qui sont contenues dans le fichier.txt.
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 » lun. 10 mai 2010, 12:28

Euh une petite question pour être sûr d'avoir bien compris ce que vous me conseillez :
il faut que je teste différentes valeurs pour le point M(x_0,y_0) jusqu'à obtenir le vecteur normal à la conique \vect{N}(x,y) passant par M, colinéaire à \vect{PM} ?
Y.M.

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1516
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, 13:06

Hippyom a écrit :O(270, -1)
P1(39, -246), P2(88, -291), P3(142, -342), P4(200, -398), P5(261, -463)
Voici les coordonnées des points dans le repère par défaut d'Asymptote. Ce sont les valeurs qui sont contenues dans le fichier.txt.


Figure asymptote 6571edac0b64cc01f4f9657b4a696242
*** 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(5cm,0);
  3. defaultpen(fontsize(10pt));
  4.  
  5. real[] tab={0,270,-1,39,-246,88,-291,142,-342,200,-398,261,-463};
  6. real Phi=tab[0]; // la première valeur correspond à la latitude géographique
  7. currentcoordsys=cartesiansystem((tab[1],tab[2]), i=(1,0), j=(0,1));
  8. point o=(tab[1],tab[2]),
  9. p1=(tab[3],tab[4]),
  10. p2=(tab[5],tab[6]),
  11. p3=(tab[7],tab[8]),
  12. p4=(tab[9],tab[10]),
  13. p5=(tab[11],tab[12]);
  14. conic co=conic (p1,p2,p3,p4,p5);
  15.  
  16. draw(co);
  17. dot(p1, green);
  18. dot(p2, green);
  19. dot(p3, green);
  20. dot(p4, green);
  21. dot(p5, green);
  22. //dot(o,blue);
  23. bqe bqeco=bqe(p1,p2,p3,p4,p5);
  24.  
  25. int i=-1;
  26. for(real k: bqeco.a) label("$a["+string(++i)+"]="+string(k)+"$",1.02truepoint(S));
  27. label("dr\^ole d'"+conictype(bqeco),truepoint(N));


Bon bein... effectivement... c'est un peu perturbant. :lol:
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 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1516
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, 13:08

Hippyom a écrit :il faut que je ...

que tu règles ton problème de la forme obtenue... avant de chercher à calculer une quelconque distance.
Philippe devrait réapparaitre tôt ou tard... et être intéressé par ton problème.
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 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 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, 13:17

Et bien à ce propos est-ce si anormal d'obtenir une forme de ce type ? ou bien est-ce qu'une conique tracée à partir de 5 points quelconques peut toujours avoir une forme conventionnelle du type parabole, ellipse, hyperbole ou dégénérée ?
Y.M.

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1516
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, 19:50

Hippyom a écrit :Et bien à ce propos est-ce si anormal ...

Je crois que c'est évident qu'il y a un problème (une conséquence d'un problème de précision de calcul ?)... car la courbe ne passe même pas par l'un des points.
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 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 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, 20:32

Euh oui c'est vrai qu'il y a un problème...
Mais il ne faut pas oublier que j'utilise des coordonnées provenant d'un tracé effectué à la main avec les imprécisions que cela comporte. Je me demande donc si l'erreur vient d'ici ?
Mais ce qui m'étonne est que pour d'autres essais que j'ai effectué avec des points différents, même choisis aléatoirement, je n'ai pas obtenu de forme aussi étrange.
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 » mar. 11 mai 2010, 21:24

bonsoir

J'ai tracé les points et la régression linéaire des points. Ils ne sont pas alignés
mais tout de même, l'erreur est de l'ordre de 1%.
Je n'ai pas le temps d'aller plus loin ce soir. Il faudrait vérifier
1) avec les coefficients donnés par asymptote tu obtiens une conique,
ces points sont-ils sur cette conique ?
2) si 1) est ok, c'est au niveau du tracé et certainement les grands coefficients
de ta conique incommodent geometry.asy. Ce genre d'exemple n'a pas été prévu,
il faut fouiller dans le code de geometry.asy
si 1) n'est pas ok, cela peut être une instabilité numérique (parce que tes points
sont presque alignés) et là c'est plus compliqué.
Ou alors un gros bug dans la résolution.
La méthode utilisée est celle de la résultante et in fine une résolution numérique
d'un polynôme de degré 4 (ou autre). Ce genre de problème doit être implémenté dans
Maple ou Mathematica en version calcul formel, voire du point purement numérique
facilement (ou presque) en Scilab ou Matlab.

D'autre part vu que tes données sont lues/acquises elles sont entachées d'une erreur.
Il serait intéressant de voir le conditionnement de ton problème, l'impact d'une modification
de l'ordre de 0,2 ou 0,4 ou moins des données sur les coefficients de ta conique.
Ça ne devrait pas beaucoup modifier la courbe au niveau de tes points mais au delà
cela peut être très sensible.

O.G.

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 » mer. 12 mai 2010, 11:05

Bonjour,
j'ai constaté qu'en demandant à Asymptote de tracer la courbe en fonction des coefficients donnés par bqe, les coefficients arrondis au millième ne suffisent apparemment pas. :?
erreur_ellipse.png
erreur_ellipse.png (7.95 Kio) Vu 8417 fois

Pour obtenir la courbe j'ai donc rentré les coefficients arrondis à 12 chiffres et la courbe tracée est alors identique à la précédente et les points placés également de façon identique :
drole_de_conique.png
drole_de_conique.png (6.22 Kio) Vu 8417 fois

le code utilisé est celui-ci :

Code : Tout sélectionner

import geometry;
input("parametres_du_cadran.txt", check=true, comment="#");

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

real[] tab=fich;
//real a=-1, b=-2.093, c=-1.098, d=-981.888, e=-1029.255, f=-241284.536;
real a=-1, b=-2.09298184242549, c=-1.09764082083416, d=-981.888108727323, e=-1029.2554303887, f=-241284.535878697;
coordsys R=cartesiansystem((tab[1],tab[2]), i=(1,0), j=(0,1));
point[] p;

bqe eq=bqe(R,a,b,c,d,e,f);
conic co=conic(eq);
draw(co);
write(conictype(eq));

for(int k=1; k<6; ++k){
   p[k]=(tab[2*k+1],tab[2*k+2]);
   p[k]=point(R, p[k]/R);
   dot(p[k]);
}

shipout(bbox(4mm,invisible));


Je vais voir quel résultat pourrait avoir une légère modification des coefficients comme tu le suggères OG.
J'ai aussi la possibilité d'utiliser les données de quelques autres points du tracé initial je vais faire d'autres essais.

Merci encore de vous intéresser à mon problème :)
Y.M.

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

Re: Distance entre un point et une conique

Message non lu par GM » mer. 12 mai 2010, 12:24

Hippyom a écrit :Je vais voir quel résultat pourrait avoir une légère modification des coefficients comme tu le suggères OG.

Si on a trois ou quatre points alignés ou quasi alignés... ok, il y a un risque d'avoir une conique dégénérée... mais pas en forme d'aiguille à coudre. :mrgreen:

Je ne crois pas que changer tes valeurs est la solution car :
1. si 3 à 3, ils ne sont pas alignés, on doit avoir une conique non dégénérée ;
2. il y a un problème évident du code ... CAR la courbe ne passe pas par l'un des points.

Je n'ai pas le temps de regarder le code de Philippe en ce moment... et je croise les doigts pour qu'il réapparaisse (disparu depuis au moins deux semaines) car c'est lui qui connait le mieux les limites de son code.
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 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Répondre