Faire un sapin de noel avec MATLAB

  • Vive le File Exchange !

Alors ne réinventez pas la roue, il y a un fichier qui le fait déjà sur le File Exchange :
A christmas tree plot

Il a été écrit en 2008 et a été sélectionné comme POTW le 25 décembre de la même année.
Regardez comme c’est joli :

christmas tree matlab

Pour créer le sapin on utilisera les 2 fonctions suivantes :

  • cylinder : Generate cylinder
  • surfl : Surface plot with colormap-based lighting

Pour créer les cadeaux en bas du sapin, on utilisera la fonction surf:

  • surf : 3-D shaded surface plot

Pour créer les flocons de neige , la fonction plot3 fera l’affaire:

  • plot3 : 3-D line plot
  • Et comment qu’on dit joyeux noël avec MATLAB?

Alors là j’aurais envie de vous souhaiter Joyeux noël MATLAB geeks! ou si vous vous rappelez de mon billet Draguer avec MATLAB on pourrait écrire dans MATLAB:

>> xx = int8(‘Joyeux noël MATLAB geeks!’)

xx =

Columns 1 through 18

74 111 121 101 117 120 32 110 111 127 108 32 77 65 84 76 65 66

Columns 19 through 25

32 103 101 101 107 115 33

>>char(xx)

ans =

Joyeux nol MATLAB geeks!

Mince il y a un caractère spécial du à l’accent dans le mot noël. En effet int8 affiche les valeurs entre -128 à 127. Or pour afficher le ë , on a besoin d’un char(235). Le int8 va donc faire un carré blanc, du coup il faut utiliser double ou int16:

>> yy = double(‘Joyeux noël MATLAB geeks!’)

yy =

Columns 1 through 15

74 111 121 101 117 120 32 110 111 235 108 32 77 65 84

Columns 16 through 25

76 65 66 32 103 101 101 107 115 33

>> char(yy)

ans =

Joyeux noël MATLAB geeks!

Voilà c’est mieux !

  • Plus de fun

Sur le blog File Exchange Pick of the Week où christmas a été sélectionné : Holiday Cheer!
le premier commentaire donne une procédure pour faire tourner le sapin sur lui même en utilisant l’icône Orbit Camera depuis le menu View -> Camera Toolbar . Franchement c’est sympa et ça permet de se rappeler de ces « gadgets » !

Sur la page du Fex où le fichier peut être téléchargé , un commentaire suggère pour la version 2 de christmas.m d’animer les flocons de neige. Pour cela rien de plus simple, moi je remplacerais la ligne suivante:

plot3(snowX,snowY,snowZ,'w*')%plot coordinates as white snow flakes

par une for-loop:

for  ii = 1 : numel(snowX)
plot3(snowX(ii),snowY(ii),snowZ(ii),'w*')%plot coordinates as white snow flakes
pause(0.1)
end

et pour accélérer l’animation, il suffirait de réduire le nombre de flocons de 800 par défaut à 100 par exemple.

snow=100; % number of snow flakes [0 .. 5000]

Have fun !

Laisser un commentaire