Pour le projet Qasari, il faut apprendre beaucoup de chose en particulier comment gérer des graphiques. C'est à dire qu'un logiciel de CAO à la base c'est écrire des lignes qui relis des points pour former des figures. On va donc commençer par travailler cette idée assez simple: tracer des lignes colorées.
On demande pas de faire des choses complexes tel que gérer un "geometric kernel modeling" pour le moment:
On s'exerce en python, d'après les exercices du livre "Apprendre à programmer en python 3, Swinnen". Après vous pourrez adapter en C++ avec Dear ImGui
- Gérer une bibliothèque graphique (tkinter)
- Créer une fonction tracer_ligne
- Trois boutons "tracer ligne" "changer couleur" "quitter"
#!/usr/bin/python
# -*- coding: utf-8 -*-
import tkinter as tk
import math
# Définir les couleurs disponibles
couleurs = ["red", "blue", "green", "yellow", "purple", "orange"]
index_couleur = 0
# Créer la fenêtre principale
root = tk.Tk()
root.title("Canevas avec lignes tournantes")
root.geometry("600x650")
# Créer le canevas
canevas = tk.Canvas(root, width=600, height=600, bg="white")
canevas.pack()
# Fonction pour tracer une ligne
angle = 0
longueur_ligne = 200
def tracer_ligne():
global angle
centre_x, centre_y = 300, 300
angle_radians = math.radians(angle)
x1 = centre_x - longueur_ligne/2 * math.cos(angle_radians)
y1 = centre_y - longueur_ligne/2 * math.sin(angle_radians)
x2 = centre_x + longueur_ligne/2 * math.cos(angle_radians)
y2 = centre_y + longueur_ligne/2 * math.sin(angle_radians)
canevas.create_line(x1, y1, x2, y2, fill=couleurs[index_couleur], width=2)
angle += 15 # Incrémenter l'angle pour la prochaine ligne
# Fonction pour changer de couleur
def changer_couleur():
global index_couleur
index_couleur = (index_couleur + 1) % len(couleurs)
# Fonction pour quitter l'application
def quitter():
root.destroy()
# Créer les boutons
frame_boutons = tk.Frame(root)
frame_boutons.pack(pady=10)
bouton_tracer = tk.Button(frame_boutons, text="Tracer ligne", command=tracer_ligne)
bouton_tracer.grid(row=0, column=0, padx=10)
bouton_changer_couleur = tk.Button(frame_boutons, text="Changer de couleur", command=changer_couleur)
bouton_changer_couleur.grid(row=0, column=1, padx=10)
bouton_quitter = tk.Button(frame_boutons, text="Quitter", command=quitter)
bouton_quitter.grid(row=0, column=2, padx=10)
# Lancer la boucle principale de l'application
root.mainloop()
Explications du script :
- Couleurs disponibles : Une liste de six couleurs est définie (couleurs). L'index de la couleur courante est stocké dans index_couleur.
- Création de la fenêtre principale : La fenêtre principale est créée avec une taille de 600x650 (50 pixels de plus en hauteur pour les boutons).
- Création du canevas : Un canevas de 600x600 pixels avec un fond blanc est créé et ajouté à la fenêtre.
- Fonction tracer_ligne :
- Calcule les coordonnées de la ligne à partir du centre du canevas.
- Trace une ligne avec la couleur courante.
- Incrémente l'angle de 15 degrés pour la prochaine ligne.
- Fonction changer_couleur : Change l'index de la couleur courante en passant à la couleur suivante de la liste.
- Fonction quitter : Ferme l'application.
- Boutons : Trois boutons sont créés et disposés dans un frame en dessous du canevas pour tracer une ligne, changer de couleur et quitter l'application.
- Boucle principale : La boucle principale de Tkinter est lancée pour afficher la fenêtre et gérer les interactions utilisateur.