Groupe ALGO Lillea Tracé d`un segment Affichage du tracé Synthèse

3 juin 2010
Groupe ALGO Lille a
Tracé d’un segment
Affichage du tracé
Synthèse
a. Sur une idée de Michel Gouy basée sur un article provenant de la revue Tangente et avec
l’aide précieuse de Raymond Moché
6
-3
-2
-1
0
1
2
3
4
543210-1-2-3 Afficher le tracé d’un segment
Fiche professeur Première S
Auteurs : Raymond Moché, Pierre Lapôtre et Jean-Marc Duquesnoy
But de l’activité : Comment afficher le tracé d’un segment en coloriant les pixels d’une machine virtuelle ?
Compétences engagées :
Comprendre une situation
Analyser la situation
Mise en place d’instructions conditionnelles et de boucles
Appel à un sous-programme
Adapter un algorithme aux contraintes du langage de pro-
grammation
Modifier un algorithme
Pré-requis :
Géométrie repérée de Seconde
Équation d’une droite
Coefficient directeur d’une droite
Distance d’un point à une droite
Bonne connaissance de base de l’un des deux logiciels Xcas ou
Scilab.
Matériels utilisés : : Salle informatique
Durée indicative : 3 séances d’une heure
Noms des logiciels utilisés : « scilab pour les lycées »ou
« Xcas »
Documents utiles à télécharger et/ou à imprimer :
Fiche Élève, fiche Professeur
Fichiers scilab : AffichageUnSegment1.sce, AffichageUnSeg-
mentPAS.sce, Sinus.sce
Commentaires :
On fait l’hypothèse que l’écran de notre machine est découpé en pixels représentés par des carrés de côté h, comme ci-dessous :
L’objectif de l’activité est de proposer un algorithme qui permet à la machine, deux points Aet Bétant donnés, d’afficher le tracé
du segment[AB] en « coloriant »certains pixels de l’écran.
Le choix de la méthode est arbitraire mais son utilisation montrera en pratique qu’elle permet d’afficher, pour des pixels choisis
suffisamment « petits », des tracés de segments ne permettant pas à notre œil de distinguer les défauts.
Déroulement de l’activité :
On donne les coordonnées de deux points Aet B.
Comment la machine va-t-elle procéder pour afficher un tracé du segment [AB] ?
Les difficultés soulevées par cette activité ne permettront pas de la réaliser sur une période courte.
Trois séances seront sans doute nécessaires.
On pourrait envisager l’activité sous la forme suivante :
Premier temps : compréhension du problème et écriture et programmation d’un algorithme dans le cas particulier où les points A
et Bsont à coordonnées entières, les « pixels »étant des carrés de 1.
Ce serait notre première séance d’une heure trente.
Deuxième temps : modifier l’algorithme de telle sorte que les coordonnées de Aet Bne soient pas nécessairement entières et les
pixels de côté h,hétant un réel fixé au début de l’algorithme.
On peut demander ce travail sous forme de devoir à la maison.
Troisième temps : utiliser l’algorithme pour relier plusieurs points, faire la synthèse de l’activité et éventuellement aborder celle
étudiant le tracé d’une courbe avec une imprimante matricielle.
1
1 Première partie : les points Aet Bsont à coordonnées entières et les « pixels »des
carrés de côté 1
Il nous a paru utile, dans un premier temps, de se placer dans ce cas particulier pour envisager le cas général ensuite.
Soient A(xa;ya) et B(xb;yb) deux points du plan à coordonnées entières.
Il parait évident que si les points Aet Bsont sur une verticale, une horizontale ou une diagonale principale, il sera facile d’afficher
un tracé du segment [AB]. On propose l’algorithme suivant :
Algorithme Afficher le tracé d’un segment
Variable
coef :nombre réel
Début
Saisir le nombre xa {abscisse de A}
Saisir le nombre ya {ordonnée de A}
Saisir le nombre xb {abscisse de B}
Saisir le nombre yb {ordonnée de B}
On détermine la fenêtre graphique dans laquelle l’affichage aura lieu { dépend du logiciel choisi }
Si xa =xb ou ya =yb Alors {segment horizontal ou vertical }
On colorie les pixels du segment [AB]
Sinon
coefyb ya
xb xa {calculons le coefficient directeur de la droite (AB)}
Si coef =1 ou -1 Alors {diagonale principale }
on colorie les pixels sur la diagonale [AB]
Sinon
On colorie le pixel de centre A
TantQue Critère d’arrêt non atteint Faire
On applique l’algorithme de recherche du pixel suivant
On colorie le pixel choisi
FinTantQue
FinSi
FinSi
Fin
Quelques remarques s’imposent concernant l’algorithme proposé :
Si les points Aet Bne sont pas sur une verticale, on commencera le tracé par le point situé le plus à gauche,
le coloriage d’un carré sera dépendant du langage machine utilisé,
quel algorithme de recherche du pixel suivant va-t-on prendre ?
dans les cas non élémentaires, c’est à dire [AB] horizontal, vertical ou sur une diagonale principale, il faudra décider d’un critère
d’arrêt de la recherche du carré à colorier.
Plaçons nous dans le cas où Aet Bne sont pas sur une verticale, une horizontale ou une diagonale principale.
Ayant coloré le premier carré de centre le point le plus à gauche, on recherche parmi les huit carrés qui entourent ce dernier celui
dont le centre est le plus proche du segment [AB].
2
Si on s’y prend bien, on constate qu’en fait deux pixels sont candidats.
mais pas forcément les mêmes :
Cela va dépendre du coefficient directeur de la droite (AB).
Il faudra distinguer les quatre cas coef f > 1, 0 < coeff < 1, coeff < 1 et 1< coef f < 0.
Quel critère de recherche du pixel suivant ? :
On va chercher le centre de l’un des deux pixels candidats le plus proche de la droite (AB).
Il faudra réinvestir alors le calcul de la distance d’un point à une droite.
3
Le pixel suivant ayant été colorié, on recommence alors jusqu’à atteindre le pixel de centre B.
2 Deuxième partie : Aet Bne sont pas nécessairement à coordonnées entières
et les pixels sont de côté h?
On remplace les points Aet Bpar deux points aet bqui leurs sont proches et qui sont centres de pixels de côté
h:
On remplace xapar Exa
hh+h
2et yapar Eya
hh+h
2.
On fera de même avec xbet yb.
En effet, si xa=k.h +λ.h, 0 λ < 1 et kZ, alors xa
h=k+λ,
donc Exa
hh=k.h.
En prodant de la même manière avec ya, on obtient un point acentre d’un pixel, comme la figure ci-dessus l’indique.
4
1 / 7 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !