Maths (2) dessiner la fleur du tournesol

En utilisant l’angle dit « angle d’or » (environ 137.5 degrés ou 2.3999 radians), on peut dessiner une spirale de Fermat selon un modèle inventé par H. Vogel, à la manière des étamines des tournesols, des écailles des pommes de pin ou de diverses organisations naturelles.

rayon = c * √n
θ = n * φ

c est une constante (si on change c, l’espacement qui sépare les éléments de la spirale change), φ est l’angle d’or et n dénombre chaque élément de la spirale. Dans l’exemple qui suit (langage processing), n prend les valeurs successives de n sont 0, 1, 2, 3, 4, et ainsi de suite jusqu’à 1000 ; Le constante c a la valeur de 10 :

float angledor=radians(137.5);

void setup(){
size(400,400);background(255);strokeWeight(7);smooth();
float x=200;float y=200;float constante=10;
for(int a=0;a<1000;a++){
float r=constante*sqrt(a);
x+=cos(angledor*a)*r;y+=sin(angledor*a)*r;
point(x,y);
}
}

On pourrait être encore plus précis en calculant l’angle d’or à la volée. Sa valeur est égale à (2*Π)/φ+1. La valeur de φ, le nombre d’or, est (1+√5)/2.
À la place de float angledor=radians(137.5); on pourra donc écrire :

float nombredor = (1+sqrt(5))/2;
float angledor = TWO_PI/(1+nombredor);

Les ports d’entrée/sortie de la carte Duemilanove

La Duemilanove (deux-mille-neuf) est l’entrée de gamme des cartes Arduino.
On peut l’acheter en France chez Alyasoft et Lextronic.

Elle embarque 16ko de mémoire flash (dont deux sont occupés) pour le programme, six entrées analogiques, 14 ports d’entrées-sorties digitales dont six peuvent servir de sorties analogiques.

Astroïde

Une fonction artisanale écrite en processing pour dessiner un astroïde.
Attention, pas « astéroïde » (objet céleste) mais bien « astroïde » (figure géométrique en forme d’étoile).

void astroide(float x, float y, float t){
float t2 = t/2;float tt=t2/2;
float[] p1 = {x,y-t2};float[] p2 = {x+t2,y};float[] p3 = {x,y+t2};float[] p4 = {x-t2,y};
beginShape();
vertex(p1[0],p1[1]);
bezierVertex(p1[0],p1[1]+tt,p2[0]-tt,p2[1],p2[0],p2[1]);
bezierVertex(p2[0]-tt,p2[1], p3[0],p3[1]-tt, p3[0],p3[1]);
bezierVertex(p3[0],p3[1]-tt, p4[0]+tt,p4[1], p4[0],p4[1]);
bezierVertex(p4[0]+tt,p4[1], p1[0],p1[1]+tt,p1[0],p1[1]);
endShape();
}

La fonction doit être placée dans le code d’un programme.
Elle s’invoque comme ceci :

astroide(x, y, taille);

où x et y sont les coordonnées horizontales et verticales du centre de l’astroïde et où taille définit le diamètre du cercle dans lequel s’inscrit la forme géométrique.

Affiches

makeartUne pages pleine de jolies affiches à télécharger, réalisées à partir de programmes rédigés en Processing (et apparemment trouvés sur openProcessing – j’en reconnais un pour l’avoir codé).
C’était pour le festival Make art qui s’est achevé dimanche dernier. Make art est un festival international dédié à l’utilisation des outils libres et des contenus ouverts dans les arts numériques.
Petite faute de goût tout de même, si les auteurs des affiches ont bien mentionné la provenance des programmes utilisés et ont reproduit leur licence d’utilisation, ils ont aussi ajouté dans le code un copyright les concernant.

(Merci à Thibault pour le signalement)