nsi:langages:processing:dessiner_objet
Différences
Ci-dessous, les différences entre deux révisions de la page.
| nsi:langages:processing:dessiner_objet [2022/10/31 23:18] – créée goupillwiki | nsi:langages:processing:dessiner_objet [2022/10/31 23:36] (Version actuelle) – [Définir un objet] goupillwiki | ||
|---|---|---|---|
| Ligne 12: | Ligne 12: | ||
| <code java> | <code java> | ||
| + | class Poisson { | ||
| + | float size; | ||
| + | Poisson(float s) { // constructeur | ||
| + | /* size permettra de régler la taille du Poisson. | ||
| + | 1 pour une taille de base, 2 pour une taille double... | ||
| + | */ | ||
| + | size = s; // contrairement à Python, pas besoin de préciser self. | ||
| + | // c'est une syntaxe Java | ||
| + | } | ||
| + | | ||
| + | void display(float x, float y, float angle){ | ||
| + | /* pour le tracer du poisson on précise a position x, y et son orientation */ | ||
| + | pushMatrix(); | ||
| + | translate(x, | ||
| + | rotate(angle); | ||
| + | scale(size); | ||
| + | line(0,0, -10,-5); | ||
| + | line(-10, | ||
| + | line(-10, | ||
| + | bezier(0, | ||
| + | bezier(0, | ||
| + | popMatrix(); | ||
| + | } | ||
| + | } | ||
| </ | </ | ||
| + | |||
| + | ==== utilisation de pushMmatrix() ==== | ||
| + | |||
| + | Pour le tracer, | ||
| + | |||
| + | Le principe est le suivant : | ||
| + | * on est capable de dessiner le poisson dans sa forme de base. Mais si on veut le tracer ailleurs, orienté autrement, en plus gros, il faudrait faire des calculs de translation, | ||
| + | * au lieu de faire ces calculs, on indique à processing les opérations que doit subir notre poisson de base. On change le contexte. On indique que l'on sera translater de '' | ||
| + | * Le dessin se fait dans ce contexte : 3 lignes pour la queue en forme de triangle, une courbe de Bézier pour l' | ||
| + | * Le contexte est initialisé avec '' | ||
| + | |||
| + | <WRAP tip>Par '' | ||
| + | |||
| + | ===== Le programme entier ===== | ||
| + | |||
| + | <code java> | ||
| + | float t = 0; | ||
| + | Poisson p; | ||
| + | |||
| + | void setup() { | ||
| + | size(640, 400); | ||
| + | stroke(0, | ||
| + | p = new Poisson(1.0); | ||
| + | } | ||
| + | |||
| + | void draw(){ | ||
| + | background(250, | ||
| + | t += 0.02; | ||
| + | float x = 320 + 120*cos(t); | ||
| + | float y = 200 + 80*sin(t - PI/3); | ||
| + | float angle = atan2(80*cos(t-PI/ | ||
| + | p.display(x, | ||
| + | } | ||
| + | |||
| + | class Poisson { | ||
| + | float size; | ||
| + | Poisson(float s) { | ||
| + | size = s; | ||
| + | } | ||
| + | | ||
| + | void display(float x, float y, float angle){ | ||
| + | pushMatrix(); | ||
| + | translate(x, | ||
| + | rotate(angle); | ||
| + | scale(size); | ||
| + | line(0,0, -10,-5); | ||
| + | line(-10, | ||
| + | line(-10, | ||
| + | bezier(0, | ||
| + | bezier(0, | ||
| + | popMatrix(); | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Dans la fonction '' | ||
| + | |||
| + | === new === | ||
| + | |||
| + | Vous pouvez noter que '' | ||
| + | |||
| + | On aurait tout aussi bien pu initialiser '' | ||
| + | |||
| + | === atan2 === | ||
| + | |||
| + | L' | ||
| + | $$\begin{cases}x(t) = 320 + 120 \cos(t)\\y(t) = 200 + 80 \sin\left(t + \frac{\pi}{3}\right)\end{cases} \Rightarrow \begin{cases}x' | ||
| + | |||
| + | L' | ||
| + | |||
| + | |||
nsi/langages/processing/dessiner_objet.1667254731.txt.gz · Dernière modification : de goupillwiki
