didier Posté(e) le 10 août 2004 Posté(e) le 10 août 2004 Bonsoir à Toutes et à Tous,je n'ai vraiment pas tout le temps dont j'ai besoin,je livre ma solution sans avoir eu le temps nécessaire au peaufinage,en particulier sur la valeur de départ,la routine est un peu longue à trouver un résultat mais ça finit par clore.je n'ai pas testé les impossibilités, à vous de jouer il s'agit d'une solution par itération : bon, on imagine que le premier rectangle existe,jusque là, j'ai pas fait de miracle, ensuite on mémorise les sommets et les gisements: (setq p1(getpoint"\nPoint Bas Gauche\n"))(setq p2 (getpoint p1 "\nPoint Bas Droit\n"))(setq p3 (getpoint p2 "\nPoint Haut Droit\n")) ; moitié de PI(setq pi2 ( / pi 2))(setvar "osmode" 0)(setvar "cmdecho" 0) ; direction 1(setq dir (angle p1 p2)) ; direction 2(setq dir2 (angle p2 p3)) ; point de départ de a(setq a 0.000001) ;Calcul d'un point sur le gisement contraire de p1 p2 sur une distance de a(setq p5 (polar p3 (- dir pi) a)) ;calcul de b en rapport à a(setq b (sqrt (- 100 (* a a))));Calcul d'un point sur le gisement de p1 p2 sur une distance de a(setq p4 (polar p1 dir a));Calcul d'un point sur le gisement perpendiculaire contraire de p1 p2 sur une distance de b(setq p6 (polar p1 dir2 b));mesurage de l'angle du sommet du triangle obtenu(setq d1 (angle p6 p5) d2 (angle p6 p4))(setq test 0.0);et là c'est la boucle de la mort;en français dans le texte; tant que la différence de gisement n'est pas à la valeur approchée de PI;recalcule un nouveau "a" et donc un nouveau "b" et ainsi de suite..(while (not (equal test pi 0.00000005))(setq a ( + 0.000001 a))(setq p5 (polar p3 (- dir pi) a))(setq b (sqrt (- 100 (* a a))))(setq p4 (polar p1 dir a))(setq p6 (polar p1 dir2 b))(setq d1 (angle p6 p5) d2 (angle p6 p4) test (- (- d2 d1)pi2)); c'est une ligne optionnelle qui ne sert à rien sinon à montrer que ça tourne(print (rtos (- test pi )2 8)) ; fin de la boucle ) ; on calcule le point manquant(setq p7 (polar p3 (- dir2 pi) b));et on fait une polyligne(command "_pline" p4 p6 p5 p7 "c"); et maintenant on affiche la précision de la figure dessinée(print (strcat "Précision Angulaire : "(rtos (- test pi )2 8))) merci de me tenir au courant d'éventuel dysfonctionnementAmicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
didier Posté(e) le 10 août 2004 Auteur Posté(e) le 10 août 2004 coucouversion 1.1une première impossibilité vient d'apparaître :c'est dans le cas où le rectangle de base n'a pas une hauteursupérieure à 10,ça va se résoudre en insérant un test :(setq hauteurrectangle (distance p2 p3))(while ( (progn (alert "\n Impossible car Hauteur inférieure à 10\n") (setq p3 (getpoint p2 "\nPoint Haut Droit\n")) (setq hauteurrectangle (distance p2 p3)) ) )il y en a d'autres, en particulier, les directions du rectangle initialmais après tout, il faut que tout le monde s'y mette.PS : j'ai la même solution en VBA, c'est plus joli,mais pas plus rapide, contrairement à ce que j'imaginaisc'est le même fonctionnement.bon j'arrête de vous saouler, une petite clope et au litavec un bon bouquin.demain sera une autre aventure.ciao Éternel débutant... Mon site perso : Programmer dans AutoCAD
Invité Patrick Posté(e) le 10 août 2004 Posté(e) le 10 août 2004 Malgré toutes les bonnes volontés, la difficulté de ce petit problème de géométrie semble grande, j'en veux pour preuve que nos amis de l'AutoCAD Users Forum cogitent aussi sur le même sujet, voir ce fil de discussion! On cite même nos discussions et nos tentatives de solution sur cet autre forum... la géométrie, un langage universel? ;) ;) Didier? note: signalons que cette discussion fait suite à celle ci.
extrusion Posté(e) le 11 août 2004 Posté(e) le 11 août 2004 Bonjour,je n'ai pas encore tester le programme mais c'est la méthode qui me paraît la plus simple.je dit bien "paraît", car je me suis casser les dents dessus... il y a trop longtemps que je n'ai pas fait cela. j'étais parti sur la recherche par itération du rayon du cercle circonscrit aux deux rectangles de cotés 10. Après cela j'ai cherché (et cherche toujours) la relation exacte qui lie les inconnues aux données connues...toujours rien ! Par contre il y a aussi des cas pour un rectangle d'origine de coté inférieur à 10... le rectangle inscrit aura 10 pour longeur. Ce pb de géométrie va me rendre dingue !
Krynn Posté(e) le 11 août 2004 Posté(e) le 11 août 2004 Bonjour a tous, j'ai essayé plein de chose et j'ai abandonné, mais j'ai transmi l'enigme un peu plus loin sur un site que j'aime bien.Et il y a plusieurs reponses (juste ou fausse) ??? Et la je suis largé, je vous laisse donc jeter un coup d'oeil dessus. http://forums.futura-sciences.com/showthread.php?p=102629#post102629
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant