%% Polygones tournants
%% JMS - 06/01/2002
%% -----------------------------------------------------
% Le nombre de côtés du polygone
numeric n;
% Le paramètre de rotation-contraction
numeric k;
% Le nombre d'itérations
numeric N;
% La couleur de base
color couleur;
% La similitude T est telle que l'image d'un sommet du
% polygone soit située sur l'un des côtés du polygone.
% i.e. l'image d'un point est un barycentre du système
% constitué de ce point et de son image dans la rotation
% de centre O et d'angle 360/n (k est le poids relatif
% de ce dernier point).
%% -----------------------------------------------------
%% La « procédure »
vardef go =
transform T;
path polygone;
% définition du polygone
polygone := right --
for i=1 upto (n-1):
right rotated (360/n*i) --
endfor
cycle;
% adaptation du polygone
polygone := polygone scaled 8cm;
% définition de la similitude
origin transformed T = origin;
right transformed T = k[right,right rotated (360/n)];
up transformed T = k[up,up rotated (360/n)];
% tracé
for j=1 upto N:
kc := (.3+.7*j/N);
if j=1: fill polygone withcolor kc*couleur; fi;
draw polygone withpen pencircle scaled .5pt
withcolor (white-kc*couleur);
polygone := polygone transformed T;
endfor;
enddef;
beginfig(1);
n := 3;
k := 0.1;
N := 50;
couleur := red;
go;
endfig;
beginfig(2);
n := 4;
k := 0.1;
N := 100;
couleur := blue;
go;
endfig;
beginfig(3);
n := 5;
k := .1;
N := 100;
couleur := green;
go;
endfig;
beginfig(4);
n := 6;
k := .14;
N := 100;
couleur := (1,1,.3);
go;
endfig;
beginfig(5);
n := 12;
k := .2;
N := 150;
couleur := (1,.6,.8);
go;
endfig;
end
|