Projets
Logo « Ami » avec l’AxiDraw
L’AxiDraw est une machine permettant de dessiner sur une feuilles avec un stylo selon un programme. En spé Nsi nous avons la possibilité de l’utiliser pour ce projet de fin première.
Introduction
J’ai décidé de reprendre un logo tiré du manga « 20th century boys », car j’aime beaucoup le design et il me semblait simple à recréer avec le code python pour l’AxiDraw.
Le début du travail
Nous avons appris comment utiliser l’AxiDraw avec nos professeurs pendant le cours, et donc la première chose à comprendre a été de coder ce dessin. C’est plutôt simple à comprendre, en effet l’AxiDraw marche seulement avec les coordonnés, on a des fonctions « segment » et « segments » fourni.
def segment(x_depart:int, y_depart:int, x_arrivee:int, y_arrivee:int):
if not coord_in_cadre(x_depart,y_depart) or not coord_in_cadre(x_arrivee,y_arrivee):
# raise ValueError("Dépassement du cadre imposé")
global dessin_valide
dessin_valide = False
print("Segment ne pouvant être tracé")
return
if axi_connect and dessin_valide:
ad.goto(x_depart * 8.267 / 793.7, y_depart * 8.267 / 793.7)
ad.pendown() # Le stylo est baissé
ad.lineto(x_arrivee * 8.267 / 793.7, y_arrivee * 8.267 / 793.7)
ad.penup() # Le stylo est relevé en fin de tracé
else:
draw.line((x_depart, y_depart, x_arrivee, y_arrivee), fill = black) # Tracé du segment
def segments(points:list):
for i in range(len(points) - 1):
if not coord_in_cadre(points[i][0],points[i][1]) or not coord_in_cadre(points[i+1][0],points[i+1][1]):
global dessin_valide
dessin_valide = False
print("Segments ne pouvant être tracés")
return
if axi_connect and dessin_valide:
for i in range(len(points)):
points[i][0], points[i][1] = points[i][0] * 8.267 / 793.7, points[i][1] * 8.267 / 793.7
ad.goto(points[0][0], points[0][1])
ad.draw_path(points)
ad.penup()
else:
for i in range(len(points)-1):
draw.line((points[i][0], points[i][1], points[i+1][0], points[i+1][1]), fill = black)
Ces deux fonctions ont besoin de coordonnés précises pour fonctionner. Pour avoir ces coordonnés j’ai eu une idée plutôt simple à utiliser, j’ai utilisé Paint car l’application donne les coordonné de la souris en temps réel. La dernière étape était de simplifier mon dessin d’origine en usant de segments et de points, puis j’ai pu reprendre tout les coordonnées et les mettre dans mon code python.

Différentes parties du dessin :
Pour l’intérieur de l’oeil j’ai utilisé les fonctions cercles codé par mes professeurs, cette fonction a besoin des coordonnés du centre du cercle et du rayon pour pouvoir dessiner les cercles. C’est assez facile à dessiner, voici le résultat :

Pour tout le contour de l’oeil et la main à l’intérieur, j’ai utilisé la fonction segments qui permet de dessiner plusieurs segments les uns à la suite des autres à partir des coordonné de chaque point noté sur le screenshot de paint juste au dessus.

Le dessin que j’ai choisi n’étant pas vraiment répétitif je n’ai pas pu utilisé de fonction crée par moi même alors j’ai simplement tout fait avec les fonctions segment, segments, cercle et polygone.
Voici tout le code que j’ai écris et l’image final :
Le code python
segments(([443,207],[400,219],[355,254],[289,315],[236,353],[190,374],[230,394],[265,415],[315,455],[360,490],[425,509],[610,510],[708,452],[759,410],[823,380],[840,369],[819,355],[764,324],[699,261],[635,224],[568,202],[482,202])) segment(422,530,422,507) segment(607,530,607,507) segments(([435,507],[435,475],[594,475],[594,507])) segments(([458,475],[435,421],[427,357],[427,283],[440,237],[444,131],[454,120],[468,120],[478,136],[481,255])) segments(([471,266],[490,241],[509,225],[529,230],[539,251])) segments(([524,269],[552,236],[574,240],[587,262])) segments(([566,286],[587,262],[599,256],[612,259],[619,273],[605,302],[604,409],[590,444],[566,475])) polygone([[427,365],[459,335],[486,317],[513,309],[541,316],[575,332],[605,362],[579,392],[550,412],[513,422],[487,416],[464,404],[439,377]]) segments(cercle(514,367,40)) segments(cercle(514,367,19)) segments(cercle(514,367,10))

Conclusion
Ce projet de Nsi était intéressant à faire car l’AxiDraw est un outil nouveau pour moi. J’ai pu apprendre plein de chose
L’image finale

Étudiant en spécialité NSI en classe de 1ère en 2022.
















