Ça y est vous savez dessiner des entités lignes qui géométriquement sont les médianes d'un triangle depuis le chapitre précédent.
Comme j'en parlais en fin de page des médianes il est possible que le dessin de base du triangle soit mal réalisé, que le dessinateur en touillant son café de l'autre main n'a pas fait attention à l'accrochage des sommets et que les lignes ne soient pas jointes même avec une différence si minime qu'il faudrait faire un zoom de malade pour s'en rendre compte.
Il ne faut pas que dans le cas de mauvaise jonction des sommets le programme dessine les médianes, il va donc falloir les tester (les sommets).
Mais comment les tester ces sommets ?
En langage naturel, on dirait à la machine :
Si tu trouves dans les coordonnées des sommets les mêmes valeurs en début et fin des sommets et ce pour chaque sommets cela signifie que les trois lignes sont parfaitement jointes.
Et si les tests de sommets identiques sont concluants alors tu peux dessiner les médianes, sinon quitter le programme et ne rien faire, s'il dessinait tout de même quelque chose ce serait faux, je n'aime pas ce qui est faux, pas vous ?
Mais on aime aussi être rassurés, alors on va ouvrir une case qui nous expliquera si oui ou non les sommets sont identiques .
Quand faire ce test ? Le plus tôt possible dans le programme car ce n'est pas la peine de faire faire des opérations au programme s'il doit ne rien en faire à la fin, je repars donc dès la définition des trois variables coord1 coord2 coord3 qui sont les listes des coordonnées des sommets des trois lignes.
En AutoLisp ça va donner ça : C'est bien la transcription en code du langage naturel cité plus haut.
là j'ai utilisé la fonction IF, allez voir la page du IF (vers la page IF) pour clarification et contactez-moi si vous avez encore des questions.
Notez l'utilisation des and et des or ils sont importants,
Admettons que le triangle ait les sommets A B C, il faut que A = B OU A =C et à la fin il faut aussi que les trois valeurs de test1,test2 et test3 soient à "OK" sinon cela signifie qu'un sommet n'est pas unique et tout à la fin on utilise la fonction quit pour sortir du programme.
Voici le code copiable :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | ;début du test de sommets correctement joints (if (or (equal (car coord1) (cadr coord2)) (equal (car coord1) (cadr coord3)) ) (setq test1 "OK") (setq test1 nil) ) (if (or (equal (car coord2) (cadr coord1)) (equal (car coord2) (cadr coord3)) ) (setq test2 "OK") (setq test2 nil) ) (if (or (equal (car coord3) (cadr coord1)) (equal (car coord3) (cadr coord2)) ) (setq test3 "OK") (setq test3 nil) ) (if (and (= test1 "OK") (= test2 "OK") (= test3 "OK") );fin du AND (alert "Les sommets sont correctement joints, on peut continuer...") (progn (alert "Les sommets sont disjoints, j'arrête là.") (quit) ) );fin du test de sommets correctement joints |
à bientôt pour de nouvelles aventures...