Géométrie du triangle


Cercle des neuf points

Il y a quelques années, j'avais essayé de tracer certains des dessins que l'on rencontre en géométrie du triangle. Devant l'absence de logiciel premettant ce genre de prouesses, j'avais écrit à cet effet une petite bibliothèque en Python, générant du code PSTricks pour LaTeX. Il suffit de décrire la figure, avec le moins de coordonnées possible, en utilisant à loisir les transformations usuelles de la géométrie (translations, rotations, homothéties, inversions, etc.) et ses constructions (parallèle, perpendiculaire, intersection). Il est même possible de faire un peu de géométrie hyperbolique. À titre d'exemple, la figure ci-dessus est obtenue de la manière suivante.


# Le cercle des neuf points, aussi connu sous le nom de
# cercle d'Euler.

def triangle():
	A = Point(0,0)
	B = Point(10,0)
	C = Point(1,7)
	return(A,B,C)

def pied(A,B,C):
	D = perpendiculaire(Droite(B,C), A)
	return intersection(D, Droite(B,C))

def pieds_des_hauteurs(A,B,C):
	P = pied(A,B,C)
	Q = pied(B,C,A)
	R = pied(C,A,B)
	return(P,Q,R)

def centre_de_gravite(A,B,C):
	return isobarycentre(A,B,C)

def centre_cercle_circonscrit(A,B,C):
	return cercle_circonscrit(A,B,C).centre

(x,y,z) = triangle()
u = milieu(y,z)
v = milieu(z,x)
w = milieu(x,y)
(p,q,r) = pieds_des_hauteurs(x,y,z)
h = orthocentre(x,y,z)
l = milieu(x,h)
m = milieu(y,h)
n = milieu(z,h)
o = centre_cercle_circonscrit(x,y,z)
g = centre_de_gravite(x,y,z)

O = milieu(h,o)

Segment(x,y).trace()
Segment(y,z).trace()
Segment(z,x).trace()

Segment(x,p).trace()
Segment(y,q).trace()
Segment(z,r).trace()

Segment(h,o).trace()

Angle(z,r,y).trace("", 0, "droit")
Angle(x,p,y).trace("", 0, "droit")
Angle(y,q,z).trace("", 0, "droit")

Cercle(O, distance(O,l)).trace("\\mathscr C", math.pi/4, "epais", "rouge")

x.trace("x")
y.trace("y")
z.trace("z", [+1,0])

u.trace("u", [0.7, 1])
v.trace("v", [1,   -0.7])
w.trace("w", [-0.5, 1])

l.trace("l", [-0.7,0])
m.trace("m", [1,-1])
n.trace("n", [-0.3,1])

p.trace("p", [+0.8,+0.7])
q.trace("q", [0.2,-1])
r.trace("r")

h.trace("h", [-1, +0.6])
o.trace("o")
O.trace("O", [-1, 0], "plein")
g.trace("g")

fini()

La documentation comprend d'autres exemples. Si vous êtes intéressé, vous pouvez télécharger le tout.

J'ai depuis abandonné ce projet : il y a des manques et probablement aussi des bugs.


zoonek@math.jussieu.fr
Last modified: Mon Oct 26 09:05:56 1998