Previous Up Next

Chapitre 17  Illusions d’optique

17.1  Illusion sur les longueurs

On tape dans un éditeur de programmes :

illusion11():={
local L;
L:=NULL;
L:=L,segment(-2,-2+4*i);
L:=L,segment(0,4*i);
L:=L,segment(-2,-2-sqrt(3)/2-i/2);
L:=L,segment(-2,-2+sqrt(3)/2-i/2);
L:=L,segment(-2+4*i,-2-sqrt(3)/2+4*i+i/2);
L:=L,segment(-2+4*i,-2+sqrt(3)/2+4*i+i/2);
L:=L,segment(0,-sqrt(3)/2+i/2);
L:=L,segment(0,sqrt(3)/2+i/2);
retourne L;
}:;
illusion12():={
local L;
L:=NULL;
L:=L,segment(4*i,-sqrt(3)/2+4*i-i/2);
L:=L,segment(4*i,sqrt(3)/2+4*i-i/2);
L:=L,segment(2,3+4*i);
L:=L,segment(2.5+i,4.5+i);
L:=L,segment(2.5+2*i,4.5+2*i);
L:=L,segment(5,4+4*i);
retourne L;
}:;

Puis on compile avec OK ou avec F9.
On tape dans un niveau de géométrie :
illusion11();
illusion12();
On obtient (les longueurs des segments parallèles ne semblent pas égales) :

17.2  Illusion sur les formes

On tape dans un éditeur de programmes :

illusion2():={
local j,L;
L:=NULL;
pour j de 1 jusque 13 faire
L:=L,cercle(0,2*j);
fpour;
L:=L,carre(-13*(1+i),13*(1-i));
retourne L;
}:;

Puis on compile avec OK ou avec F9.
On tape dans un niveau de géométrie :
illusion2();
On obtient un carré dont les côtés sembles incurvés :

17.3  Illusion de cordes torsadées

On tape dans un éditeur de programmes :

raies():={
local L,j,A,B,xa,ya;
L:=NULL;
xa:=-22;
pour j de 1 jusque 6 faire
A:=point(xa+i*22);
B:=point(xa+4+i*22);
L:=L,triangle(0,A,B,affichage=rempli);
L:=L,triangle(0,-A,-B,affichage=rempli);
xa:=xa+8;
fpour;
ya:=-18;
pour j de 1 jusque 5 faire
A:=point(-22+i*ya);
B:=point(-22+i*(ya+4));
L:=L,triangle(0,A,B,affichage=rempli);
L:=L,triangle(0,-A,-B,affichage=rempli);
ya:=ya+8;
fpour;
L:=L,affichage(carre(-2*(1+i),2*(1-i)),rempli);
retourne L;
}:;
bande():={
local L,j,xa,A,B,C,D;
L:=NULL;
xa:=-13;
A:=point(xa+i*11);
B:=point(xa+2+i*11);
C:=point((xa+6)*12/11.+i*12);
D:=point((xa+4)*12/11.+i*12);
L:=L,polygone(A,B,C,D,affichage=7+rempli);
L:=L,polygone(-A,-B,-C,-D,affichage=7+rempli);
xa:=xa+2;
pour j de 1 jusque 2 faire
A:=point(xa+i*11);
B:=point(xa+2+i*11);
C:=point((xa+6)*12/11.+i*12);
D:=point((xa+4)*12/11.+i*12);
L:=L,polygone(A,B,C,D,affichage=rempli);
L:=L,polygone(-A,-B,-C,-D,affichage=rempli);
xa:=xa+2;
A:=point(xa+i*11);
B:=point(xa+2+i*11);
C:=point((xa+6)*12/11.+i*12);
D:=point((xa+4)*12/11.+i*12);
L:=L,polygone(A,B,C,D,affichage=7+rempli);
L:=L,polygone(-A,-B,-C,-D,affichage=7+rempli);
xa:=xa+2;
fpour;
A:=point(xa+i*11);
B:=point(xa+2+i*11);
C:=point((xa+4)+i*11);
D:=point((xa+6)+i*11);
L:=L,polygone(A,B,i*11.25,C,D,i*11.75,affichage=rempli),
polygone(-A,-B,-i*11.25,-C,-D,-i*11.75,affichage=rempli);
xa:=3;
pour j de 1 jusque 2 faire
A:=point(xa+i*11);
B:=point(xa+2+i*11);
C:=point((xa-2)*12/11.+i*12);
D:=point((xa-4)*12/11.+i*12);
L:=L,polygone(A,B,C,D,affichage=7+rempli);
L:=L,polygone(-A,-B,-C,-D,affichage=7+rempli);
xa:=xa+2;
A:=point(xa+i*11);
B:=point(xa+2+i*11);
C:=point((xa-2)*12/11.+i*12);
D:=point((xa-4)*12/11.+i*12);
L:=L,polygone(A,B,C,D,affichage=rempli);
L:=L,polygone(-A,-B,-C,-D,affichage=rempli);
xa:=xa+2;
fpour;
A:=point(xa+i*11);
B:=point(xa+2+i*11);
C:=point((xa-2)*12/11.+i*12);
D:=point((xa-4)*12/11.+i*12);
L:=L,polygone(A,B,C,D,affichage=7+rempli);
L:=L,polygone(-A,-B,-C,-D,affichage=7+rempli);
retourne L;
}:;
bande1():={
local L,j,ya,A,B,C,D;
L:=NULL;
ya:=-9
pour j de 1 jusque 2 faire
A:=point(ya*i-11);
B:=point((ya+2)*i-11);
C:=point((ya-2)*i*12/11.-12);
D:=point((ya-4)*12/11.*i-12);
L:=L,polygone(A,B,C,D,affichage=rempli);
L:=L,polygone(-A,-B,-C,-D,affichage=rempli);
ya:=ya+2;
A:=point(ya*i-11);
B:=point((ya+2)*i-11);
C:=point((ya-2)*12/11.*i-12);
D:=point((ya-4)*12/11.*i-12);
L:=L,polygone(A,B,C,D,affichage=7+rempli);
L:=L,polygone(-A,-B,-C,-D,affichage=7+rempli);
ya:=ya+2;
fpour;
A:=point(ya*i-11);
B:=point((ya+2)*i-11);
C:=point((ya-2)*i*12/11.-12);
D:=point((ya-4)*12/11.*i+-12);
L:=L,polygone(A,B,C,D,affichage=rempli);
L:=L,polygone(-A,-B,-C,-D,affichage=rempli);
ya:=ya+2;
A:=point((ya+2)*i*12/11.-12);
B:=point((ya)*i*12/11.-12);
C:=point((ya-2)*i*12/11.-12);
D:=point((ya-4)*i*12/11.-12);
L:=L,polygone(A,B,-11.75,C,D,-11.25,affichage=7+rempli),
polygone(-A,-B,11.75,-C,-D,11.25,affichage=7+rempli);
ya:=1;
pour j de 1 jusque 2 faire
A:=point((ya-2)*i-11);
B:=point((ya)*i-11);
C:=point((ya+4)*12/11.*i-12);
D:=point((ya+2)*12/11.*i-12);
L:=L,polygone(A,B,C,D,affichage=rempli);
L:=L,polygone(-A,-B,-C,-D,affichage=rempli);
ya:=ya+2;
A:=point((ya-2)*i-11);
B:=point((ya)*i-11);
C:=point((ya+4)*12/11.*i-12);
D:=point((ya+2)*12/11.*i-12);
L:=L,polygone(A,B,C,D,affichage=7+rempli);
L:=L,polygone(-A,-B,-C,-D,affichage=7+rempli);
ya:=ya+2;
fpour;
A:=point((ya-2)*i-11);
B:=point(ya*i-11);
C:=point((ya+4)*12/11.*i-12);
D:=point((ya+2)*12/11.*i-12);
L:=L,polygone(A,B,C,D,affichage=rempli);
L:=L,polygone(-A,-B,-C,-D,affichage=rempli);
retourne L;
}:;
bande2():={
local L,j,ya,A,B,C,D;
L:=NULL;
ya:=-13;
A:=point((ya+1)*i+11.6);
B:=point((ya+2)*i+11);
C:=point((ya+6)*12/11.*i+12);
D:=point((ya+4)*12/11.*i+12);
L:=L,polygone(A,B,C,D,affichage=rempli);
L:=L,polygone(-A,-B,-C,-D,affichage=rempli);
ya:=ya+2;
pour j de 1 jusque 2 faire
A:=point(ya*i+11);
B:=point((ya+2)*i+11);
C:=point((ya+6)*i*12/11.+12);
D:=point((ya+4)*12/11.*i+12);
L:=L,polygone(A,B,C,D,affichage=7+rempli);
L:=L,polygone(-A,-B,-C,-D,affichage=7+rempli);
ya:=ya+2;
A:=point(ya*i+11);
B:=point((ya+2)*i+11);
C:=point((ya+6)*12/11.*i+12);
D:=point((ya+4)*12/11.*i+12);
L:=L,polygone(A,B,C,D,affichage=rempli);
L:=L,polygone(-A,-B,-C,-D,affichage=rempli);
ya:=ya+2;
fpour;
A:=point((ya)*i+11):;
B:=point((ya+2)*i+11):;
C:=point((ya+3)*i+11.75):;
D:=point((ya+3)*i+11.25):;
L:=L,polygone(B,A,C,D,affichage=7+rempli);
L:=L,polygone(-B,-A,-C,-D,affichage=7+rempli);
L:=L,polygone(D,11,B,affichage=rempli);
L:=L,polygone(-D,-11,-B,affichage=rempli);
retourne L,conj(L);
}:;
illusion31():={
retourne raies(),bande(),bande1();
}:;
illusion32():={
retourne raies(),bande(),bande2();
}:;

Puis on compile avec OK ou avec F9.
On tape dans un niveau de géométrie :
illusion31();
On obtient un carré dont les côtés sembles incurvés :
On tape dans un niveau de géométrie :
illusion32();
On obtient un carré dont les côtés sembles incurvés :

17.4  Illustration

lx(z0,r):={ 
  return(segment(z0+r*(-1-i),z0+r*(1+i)),
         segment(z0+r*(1-i),z0+r*(-1+i)));  
}:;
lc(z0,r):={ 
  return (cercle(z0,r,pi/4,7*pi/4));  
}:;
la(z0,r):={ 
  return(segment(z0+r*(-1-i),z0+r*i),
         segment(z0+r*(1-i),z0+r*i),
         segment(z0+r*-0.5,z0+r*0.5));
}:;
ls(z0,r):={ 
  return (segment(z0+r*(-1/2-i),z0-r*i),
          segment(z0+r*(1/2+i),z0+r*i),
          cercle(z0+r*i/2,r/2,pi/2,3*pi/2),
          cercle(z0-r*i/2,r/2,-pi/2,pi/2));  
}:;
illusion32();
affichage(lx(0,1),4+line_width_5);
affichage(lc(3.4+0.6*i,0.5),4+line_width_5);
affichage(la(6+1.1*i,0.9),4+line_width_5);
affichage(ls(10+1.7*i,1.3),4+line_width_5);
affichage(symetrie(droite(x=0),lc(3.4+0.6*i,0.5)),4+line_width_5);
affichage(la(-6+1.1*i,0.9),4+line_width_5);
affichage(conj(ls(-10-1.7*i,1.3)),4+line_width_5);

On obtient :


Previous Up Next