← Retour aux demos

Transformations geometriques


Objets transformation — rotation reutilisable

Un objet rotation r = rotation(angle=60, centre=O) applique a chaque sommet du triangle via transforme(r, A). Deplacez O pour deplacer le centre de rotation, deplacez A/B/C pour voir les images suivre.

-8-6-4-22468-6-4-2246s1s1s2s2s3s3OABCA2B2C2
Code DSL
O = point(0, 0, couleur="noir")
A = point(3, 0, couleur="bleu")
B = point(5, 0, couleur="bleu")
C = point(4, 2, couleur="bleu")
segment(A, B, couleur="bleu")
segment(B, C, couleur="bleu")
segment(C, A, couleur="bleu")

r = rotation(angle=60, centre=O)

A2 = transforme(r, A)
B2 = transforme(r, B)
C2 = transforme(r, C)
style(A2, couleur="rouge")
style(B2, couleur="rouge")
style(C2, couleur="rouge")
segment(A2, B2, couleur="rouge")
segment(B2, C2, couleur="rouge")
segment(C2, A2, couleur="rouge")

s1 = transforme(r, segment(A, B))
s2 = transforme(r, segment(B, C))
s3 = transforme(r, segment(C, A))
style(s1, couleur="vert", trait="tirets")
style(s2, couleur="vert", trait="tirets")
style(s3, couleur="vert", trait="tirets")

Transformations — rotation, symetrie centrale, symetrie axiale

Un segment et un cercle transformes par 3 types de transformation differents. Deplacez les points pour voir les images reagir.

-10-8-6-4-2246810-6-4-2246ss_rots_symaxes_reflABOP1P2
Code DSL
A = point(3, 2, couleur="bleu")
B = point(5, 2, couleur="bleu")
s = segment(A, B, couleur="bleu")
c = cercle(A, rayon=1, couleur="bleu")

O = point(0, 0, couleur="noir")

rot = rotation(angle=90, centre=O)
s_rot = transforme(rot, s)
c_rot = transforme(rot, c)
style(s_rot, couleur="rouge")
style(c_rot, couleur="rouge")

sym = symetrie(centre=O)
s_sym = transforme(sym, s)
c_sym = transforme(sym, c)
style(s_sym, couleur="vert")
style(c_sym, couleur="vert")

P1 = point(-6, 0, couleur="gris")
P2 = point(6, 0, couleur="gris")
axe = droite(P1, P2, couleur="gris", trait="tirets")
refl = symetrie(axe=axe)
s_refl = transforme(refl, s)
c_refl = transforme(refl, c)
style(s_refl, couleur="violet")
style(c_refl, couleur="violet")

Composition — compose(homothetie, rotation)

f = compose(h, r) : applique rotation 45° puis homothetie rapport 1.5. Le triangle bleu est transforme en deux etapes visibles.

-10-8-6-4-2246810-6-4-2246OABCA2B2C2A3B3C3
Code DSL
O = point(0, 0, couleur="noir")
A = point(2, 0, couleur="bleu")
B = point(4, 0, couleur="bleu")
C = point(3, 1.5, couleur="bleu")
segment(A, B, couleur="bleu")
segment(B, C, couleur="bleu")
segment(C, A, couleur="bleu")

r = rotation(angle=45, centre=O)
h = homothetie(rapport=1.5, centre=O)
f = compose(h, r)

A2 = transforme(r, A)
B2 = transforme(r, B)
C2 = transforme(r, C)
style(A2, couleur="orange")
style(B2, couleur="orange")
style(C2, couleur="orange")
segment(A2, B2, couleur="orange", trait="tirets")
segment(B2, C2, couleur="orange", trait="tirets")
segment(C2, A2, couleur="orange", trait="tirets")

A3 = transforme(f, A)
B3 = transforme(f, B)
C3 = transforme(f, C)
style(A3, couleur="rouge")
style(B3, couleur="rouge")
style(C3, couleur="rouge")
segment(A3, B3, couleur="rouge")
segment(B3, C3, couleur="rouge")
segment(C3, A3, couleur="rouge")

Syntaxe directe — rotation(segment, centre=O, angle=90)

Application directe sans objet transformation nomme : rotation(segment, centre=O, angle=90). Fonctionne pour segments, droites, cercles, vecteurs.

-10-8-6-4-2246810-6-4-2246sds2d2uu2OABc
Code DSL
O = point(0, 0, couleur="noir")
A = point(2, 1, couleur="bleu")
B = point(4, 1, couleur="bleu")
s = segment(A, B, couleur="bleu")
d = droite(A, B, couleur="bleu", trait="tirets")
c = cercle(point(3, 3, couleur="bleu"), rayon=1, couleur="bleu")

s2 = rotation(s, centre=O, angle=90)
style(s2, couleur="rouge")

d2 = rotation(d, centre=O, angle=90)
style(d2, couleur="rouge", trait="tirets")

c2 = rotation(c, centre=O, angle=90)
style(c2, couleur="rouge")

u = vecteur(2, 1, couleur="bleu")
r = rotation(angle=90, centre=O)
u2 = transforme(r, u)
style(u2, couleur="rouge")

c3 = homothetie(c, centre=O, rapport=2)
style(c3, couleur="vert")

Polygone — polygone(A, B, C, D, E) + transforme()

Builtin polygone(A, B, C, ...) pour creer des polygones a N sommets. Ici un pentagone transforme par rotation 72° et symetrie centrale. Deplacez les sommets ou le centre O.

-8-6-4-22468-6-4-2246ABCDEO
Code DSL
A = point(2, 0, couleur="bleu")
B = point(4, 0, couleur="bleu")
C = point(5, 2, couleur="bleu")
D = point(3, 3, couleur="bleu")
E = point(1, 2, couleur="bleu")
p = polygone(A, B, C, D, E)
style(p, couleur="bleu")

O = point(0, 0, couleur="noir")
r = rotation(angle=72, centre=O)
p2 = transforme(r, p)
style(p2, couleur="rouge")

s = symetrie(centre=O)
p3 = transforme(s, p)
style(p3, couleur="vert")

Projection orthogonale — polygone sur une droite

projection(axe=d) projette un pentagone sur l'axe Ox. Le resultat est un polygone aplati. Deplacez les sommets pour observer la projection.

-4-3-2-1123456-2-1123456dABCDEFG
Code DSL
A = point(-3, 0, couleur="noir")
B = point(5, 0, couleur="noir")
d = droite(A, B)
style(d, couleur="noir", trait="tirets")

C = point(0, 3, couleur="bleu")
D = point(2, 4, couleur="bleu")
E = point(4, 3, couleur="bleu")
F = point(3, 1.5, couleur="bleu")
G = point(1, 1.5, couleur="bleu")
p = polygone(C, D, E, F, G)
style(p, couleur="bleu")

proj = projection(axe=d)
p2 = transforme(proj, p)
style(p2, couleur="rouge")

Affinite orthogonale — cercle vers ellipse

affinite(axe=(A,B), rapport=k) etire perpendiculairement a l'axe. Un cercle devient une ellipse. Deplacez O pour observer la deformation.

-8-6-4-22468-4-22468dABO
Code DSL
A = point(-5, 0, couleur="noir")
B = point(5, 0, couleur="noir")
d = droite(A, B)
style(d, couleur="noir", trait="tirets")

O = point(0, 2, couleur="bleu")
c = cercle(O, rayon=2, couleur="bleu")

aff = affinite(axe=(A, B), rapport=0.5)
c2 = transforme(aff, c)
style(c2, couleur="rouge")

aff2 = affinite(axe=(A, B), rapport=2)
c3 = transforme(aff2, c)
style(c3, couleur="vert")

Inversion circulaire — droites et cercles

inversion(centre=O, rayon=3) : transformation non-affine. Une droite ne passant pas par O devient un cercle passant par O. Un cercle passant par O devient une droite.

-10-8-6-4-2246810-6-4-22468dd2c2c4OABCD
Code DSL
O = point(0, 0, couleur="noir")
inv = inversion(centre=O, rayon=3)

A = point(2, 0, couleur="bleu")
B = point(2, 4, couleur="bleu")
d = droite(A, B, couleur="bleu")
d2 = transforme(inv, d)
style(d2, couleur="rouge")

C = point(-3, 2, couleur="vert")
c = cercle(C, rayon=1, couleur="vert")
c2 = transforme(inv, c)
style(c2, couleur="orange")

D = point(1.5, 0, couleur="violet")
c3 = cercle(D, rayon=1.5, couleur="violet")
c4 = transforme(inv, c3)
style(c4, couleur="cyan")