Triangles
2 participants
Page 1 sur 2
Page 1 sur 2 • 1, 2
Triangles
Message d'Alphonse Capriani
Je débute avec TeXgraph et je viens de m'amuser a créer quelques macros pour tracer les cercle circonscrit ou inscrit a un triangle ainsi que pour calculer le centre de gravité, l'orthocentre ...
Voici le code de ces macros.
Je débute avec TeXgraph et je viens de m'amuser a créer quelques macros pour tracer les cercle circonscrit ou inscrit a un triangle ainsi que pour calculer le centre de gravité, l'orthocentre ...
Voici le code de ces macros.
- Code:
% Centre de Gravité :
16#Gravite#[{Gravite(<A>,<B>,<C>,<opt>)
Calcule et dessine le centre de gravité du triangle ABC.
Si opt=1, les médianes sont dessinées}
DotStyle:=bigdot,
G:=(%1+%2+%3)/3,
Point(G),
if %4=1 then
LineStyle:=dotted,
Seg(%1,(%2+%3)/2),
Seg(%2,(%1+%3)/2),
Seg(%3,(%1+%2)/2)
fi,
G]##
% Orthocentre :
16#Orthoctr#[{Orthoctr(<A>,<B>,<C>,<opt>)
Calcule et dessine l'orthocentre du triangle ABC.
Si opt=1, les hauteur du triangles sont tracées}
DotStyle:=bigdot,
$H1:=perp([%2,%3],%1),
$H2:=perp([%1,%3],%2),
$H3:=perp([%1,%2],%3),
H:=H1 Inter H2,
Point(H),
if %4=1 then
LineStyle:=dotted,
Droite(H1[1], H1[2]),
Droite(H2[1], H2[2]),
Droite(H3[1], H3[2])
fi,
H]
##
% Centre du cercle circonscrit :
16#Centrecirc#[{Centrecirc(<A>,<B>,<C>,<opt>)
Calcule et dessine le centre du cercle circonscrit ABC.
Si opt=1, les médiatrice des côtés sont déssinées}
DotStyle:=bigdot,
M1:=med(%1,%2),
M2:=med(%2,%3),
M3:=med(%1,%3),
O:=M1 Inter M2,
Point(O),
if %4=1 then
LineStyle:=dotted,
Droite(M1[1], M1[2]),
Droite(M2[1], M2[2]),
Droite(M3[1], M3[2])
fi,
O]
##
% Cercle circonscrit :
16#Cerclecirc#[{Cerclecirc(<A>,<B>,<C>) : Dessine le cercle circonscrit au triangle ABC}
O:=Centrecirc(%1,%2,%3),
Cercle(O,abs(%1-O))
]##
% Centre du cercle inscrit :
16#Centreinsc#[{Centreinsc(<A>,<B>,<C>,<opt>)
Calcule et dessine le centre du cercle inscrit au triangle ABC.
Si opt=1, les bissectrices des 3 angles sont dessinées}
DotStyle:=bigdot,
B1:=bissec(%1,%2,%3,1),
B2:=bissec(%2,%3,%1,1),
B3:=bissec(%3,%1,%2,1),
P:=B1 Inter B2,
Point(P),
if %4=1 then
LineStyle:=dotted,
Droite(B1[1],B1[2]),
Droite(B2[1],B2[2]),
Droite(B3[1],B3[2])
fi,
P]
##
% Cercle inscrit :
16#Cercleinsc#[{Cercleinsc(<A>,<B>,<C>) : Dessine le cercle inscrit au triangle ABC}
P:=Centreinsc(A,B,C),
Dr1:=perp([%1,%2],P),
intersect:=Dr1 Inter [%1,%2],
Cercle(P,abs(intersect-P))]##
Re: Triangles
Bonsoir Alphonse,
Et bien pour quelqu'un qui débute, le code est très propre!
J'ai noté cependant une petite erreur dans la macro Cercleinsc:
Il faut mettre P:=Centreinsc(%1,%2,%3).
Pour le reste, juste un conseil, lorsqu'on utilise des variables locales dans des macros (comme c'est le cas ici), on a intérêt à ce que ces variables soient effectivement déclarées locales, pour cela il faut faire précéder la première occurence par le symbole $ (par exemple $M1:= ...), sinon un utilisateur qui se sert de ta macro et qui a déjà une variable globale du même nom, verra sa variable modifiée à chaque exécution de la macro, et il va bien se demander d'où ça vient, il risque de chercher longtemps avant de trouver et va crier au bug! Donc tous les variables locales dans les macros doivent être précédées d'un $, par exemple:
Je voulais dire aussi qu'il y a déjà une commande pour le cercle circonscrit au triangle (ABC):
En tout cas, félicitations, n'hésite pas si tu as d'autres propositions.
Et bien pour quelqu'un qui débute, le code est très propre!
J'ai noté cependant une petite erreur dans la macro Cercleinsc:
- Code:
% Cercle inscrit :
16#Cercleinsc#[{Cercleinsc(<A>,<B>,<C>) : Dessine le cercle inscrit au triangle ABC}
P:=Centreinsc(A,B,C), {<--- ici }
Dr1:=perp([%1,%2],P),
intersect:=Dr1 Inter [%1,%2],
Cercle(P,abs(intersect-P))]##
Il faut mettre P:=Centreinsc(%1,%2,%3).
Pour le reste, juste un conseil, lorsqu'on utilise des variables locales dans des macros (comme c'est le cas ici), on a intérêt à ce que ces variables soient effectivement déclarées locales, pour cela il faut faire précéder la première occurence par le symbole $ (par exemple $M1:= ...), sinon un utilisateur qui se sert de ta macro et qui a déjà une variable globale du même nom, verra sa variable modifiée à chaque exécution de la macro, et il va bien se demander d'où ça vient, il risque de chercher longtemps avant de trouver et va crier au bug! Donc tous les variables locales dans les macros doivent être précédées d'un $, par exemple:
- Code:
% Centre du cercle inscrit :
16#Centreinsc#[{Centreinsc(<A>,<B>,<C>,<opt>)
Calcule et dessine le centre du cercle inscrit au triangle ABC.
Si opt=1, les bissectrices des 3 angles sont dessinées}
DotStyle:=bigdot,
$B1:=bissec(%1,%2,%3,1),
$B2:=bissec(%2,%3,%1,1),
$B3:=bissec(%3,%1,%2,1),
$P:=B1 Inter B2,
Point(P),
if %4=1 then
LineStyle:=dotted,
Droite(B1[1],B1[2]),
Droite(B2[1],B2[2]),
Droite(B3[1],B3[2])
fi,
P]
##
Je voulais dire aussi qu'il y a déjà une commande pour le cercle circonscrit au triangle (ABC):
- Code:
Cercle(A,B,C)
En tout cas, félicitations, n'hésite pas si tu as d'autres propositions.
Re: Triangles
Bonjour
Je n'ai pas encore eu le temps de jouer avec la nouvelle version.
Est-il possible de définir facilement dans TexGraph un point dans un triangle par ses coordonnées homogènes ou trilinéaires (distances aux côtés du triangle, définies à un coefficient multiplicatif près), en fonction de la mesure des angles ou bien en fonction de la longueur des côtés ? Ce serait pour "m'amuser" avec les centres de Kimberling.
http://mathworld.wolfram.com/TrilinearCoordinates.html
http://mathworld.wolfram.com/ExactTrilinearCoordinates.html
http://mathworld.wolfram.com/TriangleCenterFunction.html
http://mathworld.wolfram.com/KimberlingCenter.html
Merci d'avance
Eric
Je n'ai pas encore eu le temps de jouer avec la nouvelle version.
Est-il possible de définir facilement dans TexGraph un point dans un triangle par ses coordonnées homogènes ou trilinéaires (distances aux côtés du triangle, définies à un coefficient multiplicatif près), en fonction de la mesure des angles ou bien en fonction de la longueur des côtés ? Ce serait pour "m'amuser" avec les centres de Kimberling.
http://mathworld.wolfram.com/TrilinearCoordinates.html
http://mathworld.wolfram.com/ExactTrilinearCoordinates.html
http://mathworld.wolfram.com/TriangleCenterFunction.html
http://mathworld.wolfram.com/KimberlingCenter.html
Merci d'avance
Eric
Re: Triangles
Bonjour Eric,
J'ai parcouru un peu rapidement le premier lien, il me semble qu'il y a une relation simple entre les coordonnées barycentriques, qui sont des produits mixtes donc des aires, et les coordonnées trilinéaires qui sont les distances aux côtés. Les coordonnées barycentriques d'un point M dans un triangle (ABC) sont (à un facteur près): det(B-M,C-M), det(C-M,A-M), det(A-M,B-M), il suffit alors de les diviser par la longueur du côté correspondant.
Partant de ce principe je propose deux macros de conversion: affixe => coord trilinéaires et inversement coord trilinéaires => affixe.
La macro: trilinear( M, A, B, C): renvoit les coordonnées trilinéaires de M dans le triangle A,B,C sous forme d'une liste de 3 réels. Les points M,A,B,C sont des affixes usuels.
La macro: affix( [alpha, beta, gamma], A, B, C): renvoit l'affixe du point M de coordonnées trilinéaires [alpha, beta, gamma] dans le triangle A,B,C. Les points A,B,C sont des affixes usuels.
Ceci est sûrement à peaufiner...
J'ai parcouru un peu rapidement le premier lien, il me semble qu'il y a une relation simple entre les coordonnées barycentriques, qui sont des produits mixtes donc des aires, et les coordonnées trilinéaires qui sont les distances aux côtés. Les coordonnées barycentriques d'un point M dans un triangle (ABC) sont (à un facteur près): det(B-M,C-M), det(C-M,A-M), det(A-M,B-M), il suffit alors de les diviser par la longueur du côté correspondant.
Partant de ce principe je propose deux macros de conversion: affixe => coord trilinéaires et inversement coord trilinéaires => affixe.
La macro: trilinear( M, A, B, C): renvoit les coordonnées trilinéaires de M dans le triangle A,B,C sous forme d'une liste de 3 réels. Les points M,A,B,C sont des affixes usuels.
- Code:
{ trilinear( M, A,B,C): coordonnées trilinéaires de M dans (ABC) }
[$z:=%1, $a:=%2, $b:=%3, $c:=%4,
Im(bar(b-z)*(c-z))/abs(b-c),
Im(bar(c-z)*(a-z))/abs(c-a),
Im(bar(a-z)*(b-z))/abs(a-b)]
La macro: affix( [alpha, beta, gamma], A, B, C): renvoit l'affixe du point M de coordonnées trilinéaires [alpha, beta, gamma] dans le triangle A,B,C. Les points A,B,C sont des affixes usuels.
- Code:
{ affix( [alpha,beta,gamma], A,B,C): affixe du point de coordonnées trilinéaires
[alpha,beta,gamma] dans le triangle (ABC)}
[$a:=%2, $b:=%3, $c:=%4,
{coordonnées barycentriques}
$u:=Copy(%1,1,1)*abs(c-b),
$v:=Copy(%1,2,1)*abs(a-c),
$w:=Copy(%1,3,1)*abs(b-a),
{affixe}
(u*a+v*b+w*c)/(u+v+w)]
Ceci est sûrement à peaufiner...
Re: Triangles
Je te remercie, je vais tâcher de voir ce que je peux faire avec durant les prochaines vacances et si j'arrive à tracer des cubiques isogonales.
Re: Triangles
Eric Kouris a écrit:Je te remercie, je vais tâcher de voir ce que je peux faire avec durant les prochaines vacances et si j'arrive à tracer des cubiques isogonales.
OK, de mon côté je creuse un peu plus la question quand j'aurai moins de copies!!
Re: Triangles
J'ai laissé de côté les coordonnées trilinéaires pour l'instant mais je vais y revenir.
Mon problème aujourd'hui est de tracer une bout de perpendiculaire (toute la droite, c'est bon, j'ai vu la commande). Donc, j'ai un point P, une droite (AB) (définie par les points A et B) et je souhaite tracer le segment reliant P au pied de la perpendiculaire à (AB) passant par P.
J'ai tenté l'élément utilisateur suivant ... mais sans résultat
(Le but est de tracer la droite de Simson)
Mon problème aujourd'hui est de tracer une bout de perpendiculaire (toute la droite, c'est bon, j'ai vu la commande). Donc, j'ai un point P, une droite (AB) (définie par les points A et B) et je souhaite tracer le segment reliant P au pied de la perpendiculaire à (AB) passant par P.
J'ai tenté l'élément utilisateur suivant ... mais sans résultat
- Code:
[
E:=Get(Dperp([A,B],P),0) InterL Get(Droite(A,B),0),
Ligne(P,E)
]
(Le but est de tracer la droite de Simson)
Re: Triangles
Merci
Voila mon code pour obtenir la droite Simson (il y une demi-droite pour faire joli mais qu'il faut adapter si on change la valeur des paramètres)
Voila mon code pour obtenir la droite Simson (il y une demi-droite pour faire joli mais qu'il faut adapter si on change la valeur des paramètres)
- Code:
% TeXgraph version 1.94 beta-7.1
% Fenetre Xmin Xmax Ymin Ymax Xscale Yscale
100#-1.5#1.5#-1.2#1.5#2.5#2.5##
% Marges gauche droite haut bas cadre gestion_couleur comptgraph
101#0#0#0#0#0#1#8##
% Affectation des Variables theta et phi et type de perspective
18##[theta:=0.5236, phi:=1.0472,OriginalCoord(1),IdMatrix(),IdMatrix3D(),ModelView(ortho)]##
% Déclaration des Variables Globales
15#A#exp(i*pi)##
15#B#exp(-i*pi/7)##
15#C#exp(1.2*i*pi/5)##
15#P#exp(3*i*pi/5)##
15#F#proj(P,Liste(A,B))##
15#E#proj(P,A,C)##
15#D#proj(P,B,C)##
% Déclaration des Macros
% Déclaration des Eléments graphiques
% objet1 (Cercle)
7#objet1#[ 0,1 ]##
% LabA (Utilisateur)
18##[tMin:=-2,tMax:=2]##
14#LabA#LabelDot(A,"$A$","SO",1)#-1##
% LabB (Utilisateur)
14#LabB#LabelDot(B,"$B$","SE",1)#-1##
% LabC (Utilisateur)
14#LabC#LabelDot(C,"$C$","E",1)#-1##
% objet2 (Ligne Polyg.)
12#objet2#[ A,B,C ]#1#0##
% LabP (Utilisateur)
14#LabP#LabelDot(P,"$P$","NO",1)#-1##
% objet6 (Utilisateur)
14#objet6#[
Seg( P, proj(P,A,B) ),
Seg( P, proj(P,B,C) ),
Seg( P, proj(P,C,A) ),
]#-1##
% LabF (Utilisateur)
14#LabF#LabelDot(F,"$F$","S",1)#-1##
% LabE (Utilisateur)
14#LabE#LabelDot(E,"$E$","SE",1)#-1##
% LabD (Utilisateur)
14#LabD#LabelDot(D,"$D$","E",1)#-1##
% Ddroite7 (Utilisateur)
14#Ddroite7#Ddroite(B,C)#-1##
% objet8 (Droite)
6#objet8#[ D,E ]#0#0##
Re: Triangles
Bonsoir Eric,
Je me suis amusé à modifier légèrement ton code en lui adjoignant le modèle lieu1.mod, maintenant on peut déplacer le point P à la souris sur le cercle:
Ce fichier modèle (lieu1.mod) est né des suggestions de Samuel, et mériterait d'être documenté ...
Je me suis amusé à modifier légèrement ton code en lui adjoignant le modèle lieu1.mod, maintenant on peut déplacer le point P à la souris sur le cercle:
- Code:
% TeXgraph version 1.94 beta-7.1
% Fenetre Xmin Xmax Ymin Ymax Xscale Yscale
100#-1.33802120035414#1.30170162036724#-1.11344897588826#1.27728439428639#3.78827652717992#3.78827652717992##
% Marges gauche droite haut bas cadre gestion_couleur comptgraph
101#0.5#0.5#0.5#0.5#0#1#1##
% Affectation des Variables theta et phi et type de perspective
18##[theta:=0.5236, phi:=1.0472,OriginalCoord(1),IdMatrix(),IdMatrix3D(),ModelView(ortho)]##
% Déclaration des Variables Globales
15#DotAff#-0.51762101491718+0.85320783497217*i##
15#UseDot#1##
15#CtrlColorDot#blue##
15#CtrlDotStyle#cross##
15#CtrlColorAssign#gray##
15#DelayAnim#100##
15#SaveAnim#0##
15#Dotperline#25##
15#Load#InputMac("lieu1.mac")##
15#P#DotAff[1]##
15#A#exp(i*pi)##
15#B#exp(-i*pi/7)##
15#C#exp(1.2*i*pi/5)##
15#F#proj(P,Liste(A,B))##
15#E#proj(P,A,C)##
15#D#proj(P,B,C)##
15#AssignP#[3,Get(Cercle(0,1,%4))]##
% Déclaration des Macros
16#Init#ReCalc()##
16#Name1#P##
% Déclaration des Eléments graphiques
% objet1 (Cercle)
7#objet1#[ 0,1 ]##
% LabA (Utilisateur)
18##[tMin:=-2,tMax:=2]##
14#LabA#LabelDot(A,"$A$","SO",1)#-1##
% LabB (Utilisateur)
14#LabB#LabelDot(B,"$B$","SE",1)#-1##
% LabC (Utilisateur)
14#LabC#LabelDot(C,"$C$","E",1)#-1##
% objet2 (Ligne Polyg.)
12#objet2#[ A,B,C ]#1#0##
% objet6 (Utilisateur)
14#objet6#[
Seg( P, proj(P,A,B) ),
Seg( P, proj(P,B,C) ),
Seg( P, proj(P,C,A) ),
]#-1##
% LabF (Utilisateur)
14#LabF#LabelDot(F,"$F$","S",1)#-1##
% LabE (Utilisateur)
14#LabE#LabelDot(E,"$E$","SE",1)#-1##
% LabD (Utilisateur)
14#LabD#LabelDot(D,"$D$","E",1)#-1##
% Ddroite7 (Utilisateur)
14#Ddroite7#Ddroite(B,C)#-1##
% objet8 (Droite)
6#objet8#[ D,E ]#0#0##
% LabP (Utilisateur)
18##[Width:=8,Color:=8421504,DotStyle:=2]##
14#LabP#LabelDot(P,"P","N",1)#-1##
% angesdroits (Utilisateur)
18##[Width:=2,Color:=0,tMin:=-1.338,tMax:=1.3017,DotStyle:=0]##
14#angesdroits#[angleD(A,F,P,0.25),
angleD(C,E,P,0.25),
angleD(B,D,P,0.25)
]#-1##
Ce fichier modèle (lieu1.mod) est né des suggestions de Samuel, et mériterait d'être documenté ...
Dernière édition par P.Fradin le Jeu 9 Oct - 22:55, édité 2 fois
Re: Triangles
Je poursuis à partir de la figure précédente. Je souhaite marquer certains angles pour que l'on puisse suivre la démonstration sur la figure.
Par exemple, comment marquer l'angle AEF avec un $x$ (mais sans ajouter un arc pour visualiser l'angle) ?
Par exemple, comment marquer l'angle AEF avec un $x$ (mais sans ajouter un arc pour visualiser l'angle) ?
Re: Triangles
Je ne sais pas si j'ai bien compris, mais je pense que cela rejoint le sujet que j'ai ouvert dans la rubrique Macros/Propositions concernant les arcs et les segments "labellisés". Voici la macro LabelArc:
Avec ça, tu peux ajouter dans ton fichier sur Simson, l'élément suivant:
L'arc n'est pas dessiné, mais le label est placé.
- Code:
{LabelArc(B,A,C,R,sens,"texte" <,[options]>)
options
labelpos = inside ou outside (outside par defaut)
labelsep = distance (cm) pour top ou bottom (0.25 par defaut)
}
[ $inside:=0, $outside:=1,
labelpos:=outside, $labelsep:=0.25,
SaveAttr(), $aux:=Eval(String(%7)),
$B:=%1, $A:=%2, $C:=%3, $R:=%4, $sens:=2*(%5>0)-1,
Rarc(B,A,C,R,sens),
LabelAngle:=0, $u:=(B-A)/Abs(B-A)+(C-A)/Abs(C-A), u:=u/Abs(u),
$direct:=2*(Im(bar(B-A)*(C-A))>0)-1, {sens direct ou non}
u:=direct*sens*u,
if labelpos=outside then
Label(A+(R+labelsep)*u,%6)
elif labelpos=inside then
Label(A+(R-labelsep)*u,%6)
fi,
RestoreAttr()
]
Avec ça, tu peux ajouter dans ton fichier sur Simson, l'élément suivant:
- Code:
[LineStyle:=noline,
LabelArc(A,E,F,0.5,1,"$x$")
]
L'arc n'est pas dessiné, mais le label est placé.
Re: Triangles
Voila le fichier avec les codages
But du jeu, montrer que x=y en utilisant des quadrilatères cycliques.
- Code:
% TeXgraph version 1.94 beta-7.1
% Fenetre Xmin Xmax Ymin Ymax Xscale Yscale
100#-1.5#1.5#-1.2#1.5#2.5#2.5##
% Marges gauche droite haut bas cadre gestion_couleur comptgraph
101#0#0#0#0#0#1#10##
% Affectation des Variables theta et phi et type de perspective
18##[theta:=0.5236, phi:=1.0472,OriginalCoord(1),IdMatrix(),IdMatrix3D(),ModelView(ortho)]##
% Déclaration des Variables Globales
15#A#exp(i*pi)##
15#B#exp(-i*pi/7)##
15#C#exp(1.2*i*pi/5)##
15#D#exp(3*i*pi/5)##
15#N#proj(D,Liste(A,B))##
15#M#proj(D,A,C)##
15#L#proj(D,B,C)##
% Déclaration des Macros
16#LabelArc#{LabelArc(B,A,C,R,sens,"texte" <,[options]>)
options
labelpos = inside ou outside (outside par defaut)
labelsep = distance (cm) pour top ou bottom (0.25 par defaut)
}
[ $inside:=0, $outside:=1,
labelpos:=outside, $labelsep:=0.25,
SaveAttr(), $aux:=Eval(String(%7)),
$B:=%1, $A:=%2, $C:=%3, $R:=%4, $sens:=2*(%5>0)-1,
Rarc(B,A,C,R,sens),
LabelAngle:=0, $u:=(B-A)/Abs(B-A)+(C-A)/Abs(C-A), u:=u/Abs(u),
$direct:=2*(Im(bar(B-A)*(C-A))>0)-1, {sens direct ou non}
u:=direct*sens*u,
if labelpos=outside then
Label(A+(R+labelsep)*u,%6)
elif labelpos=inside then
Label(A+(R-labelsep)*u,%6)
fi,
RestoreAttr()
]##
% Déclaration des Eléments graphiques
% objet1 (Cercle)
7#objet1#[ 0,1 ]##
% LabA (Utilisateur)
18##[tMin:=-2,tMax:=2]##
14#LabA#LabelDot(A,"$A$","SO",1)#-1##
% LabB (Utilisateur)
14#LabB#LabelDot(B,"$B$","SE",1)#-1##
% LabC (Utilisateur)
14#LabC#LabelDot(C,"$C$","E",1)#-1##
% objet2 (Ligne Polyg.)
12#objet2#[ A,B,C,D,A,C ]#0#0##
% LabD (Utilisateur)
14#LabD#LabelDot(D,"$D$","NO",1)#-1##
% objet6 (Utilisateur)
14#objet6#[
Seg( D, proj(D,A,B) ),
Seg( D, proj(D,B,C) ),
Seg( D, proj(D,C,A) ),
]#-1##
% LabN (Utilisateur)
14#LabN#LabelDot(N,"$N$","S",1)#-1##
% LabM (Utilisateur)
14#LabM#LabelDot(M,"$M$","SE",1)#-1##
% LabL (Utilisateur)
14#LabL#LabelDot(L,"$L$","E",1)#-1##
% Ddroite7 (Utilisateur)
14#Ddroite7#Ddroite(B,C)#-1##
% objet8 (Droite)
6#objet8#[ L,M ]#0#0##
% objet10 (Utilisateur)
18##[tMin:=-1.5,tMax:=1.5,LabelSize:=1]##
14#objet10#[LineStyle:=noline,
LabelArc(A,M,N,0.5,1,"$x$"),
LabelArc(A,D,N,0.5,1,"$x$"),
LabelArc(C,M,L,0.5,1,"$y$"),
LabelArc(C,D,L,0.5,1,"$y$"),
LabelArc(N,D,C,0.3,1,"$z$"),
]#-1##
But du jeu, montrer que x=y en utilisant des quadrilatères cycliques.
Re: Triangles
Je repars de mon code pour la droite de Simson (sans le codage des angles) et je voudrais faire tourner le point P sur le cercle circonscrit et afficher la droite de Simson correspondant à chaque position (mettons pour 100 points) afin de faire apparaitre une deltoïde.
Comment coder la boucle ?
Comment coder la boucle ?
Re: Triangles
Salut Eric,
Essaie ça dans un élément Utilisateur:
exp(i*a) joue le rôle de P dans la boucle
Essaie ça dans un élément Utilisateur:
- Code:
for a from 0 to 2*pi step pi/50 do
Droite(proj(exp(i*a),C,B), proj(exp(i*a),A,C))
od
exp(i*a) joue le rôle de P dans la boucle
Re: Triangles
Merci
Voila le nouveau code. 100 droites, c'est de trop, on ne voit plus rien, 20 suffisent amplement ...
Voila le nouveau code. 100 droites, c'est de trop, on ne voit plus rien, 20 suffisent amplement ...
- Code:
% TeXgraph version 1.94 beta-7.1
% Fenetre Xmin Xmax Ymin Ymax Xscale Yscale
100#-1.5#1.5#-1.2#1.5#2.5#2.5##
% Marges gauche droite haut bas cadre gestion_couleur comptgraph
101#0#0#0#0#0#1#9##
% Affectation des Variables theta et phi et type de perspective
18##[theta:=0.5236, phi:=1.0472,OriginalCoord(1),IdMatrix(),IdMatrix3D(),ModelView(ortho)]##
% Déclaration des Variables Globales
15#A#exp(i*pi)##
15#B#exp(-i*pi/7)##
15#C#exp(1.2*i*pi/5)##
% Déclaration des Macros
% Déclaration des Eléments graphiques
% objet1 (Cercle)
7#objet1#[ 0,1 ]##
% LabA (Utilisateur)
18##[tMin:=-2,tMax:=2]##
14#LabA#LabelDot(A,"$A$","SO",1)#-1##
% LabB (Utilisateur)
14#LabB#LabelDot(B,"$B$","SE",1)#-1##
% LabC (Utilisateur)
14#LabC#LabelDot(C,"$C$","E",1)#-1##
% objet2 (Ligne Polyg.)
18##[Width:=5,Color:=255]##
12#objet2#[ A,B,C ]#1#0##
% objet9 (Utilisateur)
18##[Width:=2,Color:=0,tMin:=-1.5,tMax:=1.5]##
14#objet9#for a from 0 to 2*pi step pi/10 do
Droite(proj(exp(i*a),C,B), proj(exp(i*a),A,C))
od#-1##
Re: Triangles
Je repars d'un fichier simple
Je voudrais faire apparaitre l'intersection M' de la droite (PM) et du cercle et tracer le segment [PM']. Comment faire ? 5ensuite, je pourrai le faire pour les autres points)
Merci d'avance.
PS : on pourrait peut-être scinder ce fil et en créer un nouveau rien que pour la droite de Simson.
- Code:
% TeXgraph version 1.94 beta-7.1
% Fenetre Xmin Xmax Ymin Ymax Xscale Yscale
100#-1.5#1.5#-1.2#1.5#2.5#2.5##
% Marges gauche droite haut bas cadre gestion_couleur comptgraph
101#0#0#0#0#0#1#8##
% Affectation des Variables theta et phi et type de perspective
18##[theta:=0.5236, phi:=1.0472,OriginalCoord(1),IdMatrix(),IdMatrix3D(),ModelView(ortho)]##
% Déclaration des Variables Globales
15#A#exp(i*pi)##
15#B#exp(-i*pi/7)##
15#C#exp(1.2*i*pi/5)##
15#D#exp(3.4*i*pi/5)##
15#N#proj(D,Liste(A,B))##
15#M#proj(D,A,C)##
15#L#proj(D,B,C)##
% Déclaration des Macros
% Déclaration des Eléments graphiques
% objet1 (Cercle)
7#objet1#[ 0,1 ]##
% LabA (Utilisateur)
18##[tMin:=-2,tMax:=2]##
14#LabA#LabelDot(A,"$A$","O",1)#-1##
% LabB (Utilisateur)
14#LabB#LabelDot(B,"$B$","SE",1)#-1##
% LabC (Utilisateur)
14#LabC#LabelDot(C,"$C$","E",1)#-1##
% objet2 (Ligne Polyg.)
12#objet2#[ A,B,C ]#1#0##
% LabD (Utilisateur)
14#LabD#LabelDot(D,"$P$","NO",1)#-1##
% objet6 (Utilisateur)
14#objet6#[
Seg( D, proj(D,A,B) ),
Seg( D, proj(D,B,C) ),
Seg( D, proj(D,C,A) ),
]#-1##
% LabN (Utilisateur)
14#LabN#LabelDot(N,"$N$","S",1)#-1##
% LabM (Utilisateur)
14#LabM#LabelDot(M,"$M$","SE",1)#-1##
% LabL (Utilisateur)
14#LabL#LabelDot(L,"$L$","E",1)#-1##
% Ddroite7 (Utilisateur)
14#Ddroite7#Ddroite(B,C)#-1##
% objet8 (Droite)
6#objet8#[ L,M ]#0#0##
Je voudrais faire apparaitre l'intersection M' de la droite (PM) et du cercle et tracer le segment [PM']. Comment faire ? 5ensuite, je pourrai le faire pour les autres points)
Merci d'avance.
PS : on pourrait peut-être scinder ce fil et en créer un nouveau rien que pour la droite de Simson.
Re: Triangles
Bonsoir Eric,
Voici par exemple une détermination graphique de M':
I contient la liste des points d'intersection, il s'agit ensuite de trier celui qui nous intéresse.
Un autre exemple avec une détermination par le calcul:
Voici par exemple une détermination graphique de M':
- Code:
[ I:=Get(Cercle(0,1)) InterL Get(Droite(D,M)),
M':=I[1], if abs(M'-D)<0.1 then M':=I[2] fi,
Seg(M,M')]
I contient la liste des points d'intersection, il s'agit ensuite de trier celui qui nous intéresse.
Un autre exemple avec une détermination par le calcul:
- Code:
[ sol:=Solve( abs(D+x*(M-D))-1, x, -15,15),
if abs(sol[1])<1E-10 then $x:=sol[2] else x:=sol[1] fi,
M':=D+x*(M-D), Seg(M,M')
]
Re: Triangles
J'ai essayer en utilisant les compléments 2D et en mixant mais à l'arrivée le M' finit sur P même si Texgraph trouve les deux points ...
Variable M1 : Intersec(Droite(M,D),C1)
et un LabelDot(M1,"$M'$","S",1)
(j'ai renommé le cercle en C1)
Merci pour ton aide
Variable M1 : Intersec(Droite(M,D),C1)
et un LabelDot(M1,"$M'$","S",1)
(j'ai renommé le cercle en C1)
Merci pour ton aide
Re: Triangles
Oui mais cette solution de marche pas toujours car M1 est une liste de 2 points et LabelDot n'affiche que le premier! Essaie plutôt la solution que je t'ai proposée plus haut.
Re: Triangles
C'était bien là mon problème. Voila maintenant le fichier complété avec les parallèles à la droite de Simson.
- Code:
% TeXgraph version 1.94 beta-7.1
% Fenetre Xmin Xmax Ymin Ymax Xscale Yscale
100#-1.5#1.5#-1.3#1.5#2.5#2.5##
% Marges gauche droite haut bas cadre gestion_couleur comptgraph
101#0#0#0#0#0#1#12##
% Affectation des Variables theta et phi et type de perspective
18##[theta:=0.5236, phi:=1.0472,OriginalCoord(1),IdMatrix(),IdMatrix3D(),ModelView(ortho)]##
% Déclaration des Variables Globales
15#A#exp(i*pi)##
15#B#exp(-i*pi/7)##
15#C#exp(1.2*i*pi/5)##
15#D#exp(3.4*i*pi/5)##
15#N#proj(D,Liste(A,B))##
15#M#proj(D,A,C)##
15#L#proj(D,B,C)##
% Déclaration des Macros
% Déclaration des Eléments graphiques
% C1 (Cercle)
7#C1#[ 0,1 ]##
% LabA (Utilisateur)
18##[tMin:=-2,tMax:=2]##
14#LabA#LabelDot(A,"$A$","O",1)#-1##
% LabB (Utilisateur)
14#LabB#LabelDot(B,"$B$","SE",1)#-1##
% LabC (Utilisateur)
14#LabC#LabelDot(C,"$C$","E",1)#-1##
% objet2 (Ligne Polyg.)
12#objet2#[ A,B,C ]#1#0##
% LabD (Utilisateur)
14#LabD#LabelDot(D,"$P$","NO",1)#-1##
% LabN (Utilisateur)
14#LabN#LabelDot(N,"$N$","SE",1)#-1##
% LabM (Utilisateur)
14#LabM#LabelDot(M,"$M$","SE",1)#-1##
% LabL (Utilisateur)
14#LabL#LabelDot(L,"$L$","E",1)#-1##
% Ddroite7 (Utilisateur)
14#Ddroite7#Ddroite(B,C)#-1##
% objet8 (Droite)
6#objet8#[ L,M ]#0#0##
% objet10 (Utilisateur)
18##[Width:=5,tMin:=-1.5,tMax:=1.5]##
14#objet10#[ I:=Get(Cercle(0,1)) InterL Get(Droite(D,M)),
M':=I[1], if abs(M'-D)<0.1 then M':=I[2] fi,
Seg(M,M'),
LabelDot(M',"$M'$","S",1),
LineStyle:=dashed,
Seg(B,M')
]#-1##
% objet11 (Utilisateur)
14#objet11#[ I:=Get(Cercle(0,1)) InterL Get(Droite(D,L)),
L':=I[1], if abs(L'-D)<0.1 then L':=I[2] fi,
LabelDot(L',"$L'$","N",1),
LineStyle:=dashed,
Seg(A,L')
]#-1##
% objet12 (Utilisateur)
14#objet12#[ I:=Get(Cercle(0,1)) InterL Get(Droite(D,N)),
N':=I[1], if abs(N'-D)<0.1 then N':=I[2] fi,
Seg(N,N'),
LabelDot(N',"$N'$","SO",1),
LineStyle:=dashed,
Seg(C,N')
]#-1##
% objet6 (Utilisateur)
18##[Width:=2,tMin:=-2,tMax:=2]##
14#objet6#[
Seg( D, proj(D,A,B) ),
Seg( D, proj(D,B,C) ),
Seg( D, proj(D,C,A) ),
]#-1##
Dernière édition par P.Fradin le Sam 1 Nov - 16:49, édité 1 fois (Raison : Ajout de la figure avec angles droits)
Re: Triangles
P.Fradin a écrit:Tu es à fond dans la géométrie en ce moment !
Je ferai mieux de finir les figures pour la dernière traduction que j'ai faite (pour que ce soit prêt si un éditeur est intéressé) ... Et par ailleurs, un éditeur m'a proposé de faire une nouvelle traduction, j'attends de recevoir le bouquin.
Mais j'avais aussi une idée qui me trottait dans la tête concernant la géométrie. Je me suis lancé cette semaine, on verra bien où ça arrive d'ici un an ou deux.
Re: Triangles
Un nouvel exemple, la droite de Simson d'un quadrilatère.
- Code:
% TeXgraph version 1.94 beta-7.1
% Fenetre Xmin Xmax Ymin Ymax Xscale Yscale
100#-1.5#1.5#-1.2#1.5#2.5#2.5##
% Marges gauche droite haut bas cadre gestion_couleur comptgraph
101#0#0#0#0#0#1#23##
% Affectation des Variables theta et phi et type de perspective
18##[theta:=0.5236, phi:=1.0472,OriginalCoord(1),IdMatrix(),IdMatrix3D(),ModelView(ortho)]##
% Déclaration des Variables Globales
15#A1#exp(1.45*i*pi)##
15#A2#exp(-i*pi/6)##
15#A3#exp(1.2*i*pi/5)##
15#P#exp(0.95*i*pi)##
15#A4#exp(3.2*i*pi/5)##
15#P12#proj(P,A1,A2)##
15#P23#proj(P,A2,A3)##
15#P24#proj(P,A2,A4)##
15#P34#proj(P,A3,A4)##
15#P13#proj(P,A1,A3)##
15#D1#proj(P,P23,P24)##
15#D2#proj(P,P13,P34)##
15#D3#proj(P,P12,P24)##
15#D4#proj(P,P12,P23)##
% Déclaration des Macros
% Déclaration des Eléments graphiques
% objet1 (Cercle)
7#objet1#[ 0,1 ]##
% LabA1 (Utilisateur)
18##[tMin:=-2,tMax:=2]##
14#LabA1#LabelDot(A1,"$A_{1}$","S",1)#-1##
% LabA2 (Utilisateur)
14#LabA2#LabelDot(A2,"$A_{2}$","E",1)#-1##
% LabA3 (Utilisateur)
14#LabA3#LabelDot(A3,"$A_{3}$","NE",1)#-1##
% LabP (Utilisateur)
14#LabP#LabelDot(P,"$P$","O",1)#-1##
% L4 (Droite)
6#L4#[ P12,P23 ]#0#0##
% L3 (Droite)
6#L3#[ P12,P24 ]#0#0##
% objet15 (Ligne Polyg.)
18##[Width:=5]##
12#objet15#[ A1,A2,A3,A4,A1,A3 ]#0#0##
% objet16 (Ligne Polyg.)
12#objet16#[ A2,A4 ]#0#0##
% LabA4 (Utilisateur)
18##[Width:=2,tMin:=-1.5,tMax:=1.5]##
14#LabA4#LabelDot(A4,"$A4$","N",1)#-1##
% L1 (Droite)
6#L1#[ P23,P24 ]#0#0##
% L2 (Droite)
6#L2#[ P13,P34 ]#0#0##
% LabD1 (Utilisateur)
14#LabD1#LabelDot(D1,"$D_{1}$","N",1)#-1##
% LabD2 (Utilisateur)
14#LabD2#LabelDot(D2,"$D_{2}$","O",1)#-1##
% LabD4 (Utilisateur)
14#LabD4#LabelDot(D4,"$D_{4}$","E",1)#-1##
% Simson (Droite)
18##[Width:=4,LineStyle:=1]##
6#Simson#[ D1,D2 ]#0#0##
% LabD3 (Utilisateur)
18##[Width:=2,LineStyle:=0]##
14#LabD3#LabelDot(D3,"$D_{3}$","O",1)#-1##
% objet20 (Utilisateur)
18##[LabelStyle:=1]##
14#objet20#[$x:=rectangle(Get(L2)),
Label( Re(x[2]+0.05)+i*Im(x[2]), "$l_{2}$")
]#-1##
% objet21 (Utilisateur)
18##[LabelStyle:=9]##
14#objet21#[$x:=rectangle(Get(L1)),
Label( Re(x[2])+i*(Im(x[2]+0.1)), "$l_{1}$")
]#-1##
% objet22 (Utilisateur)
18##[LabelStyle:=1]##
14#objet22#[$x:=rectangle(Get(L3)),
Label( Re(x[2]+0.05)+i*Im(x[1]), "$l_{3}$")
]#-1##
% objet23 (Utilisateur)
18##[LabelStyle:=10]##
14#objet23#[$x:=rectangle(Get(L4)),
Label( Re(x[2]-0.05)+i*Im(x[1]), "$l_{4}$")
]#-1##
Dernière édition par P.Fradin le Sam 1 Nov - 16:53, édité 1 fois (Raison : Ajout de la figure)
Re: Triangles
Dans la même veine que l'exemple précédent, la droite de Cantor de deux points par rapport à un quadrilatère
Soit $A_{1}A_{2}A_{3}A_{4}$ un quadrilatère inscrit dans un cercle et $P_{1}$ et $P_{2}$ deux points de ce cercle. Les quatre intersections des quatre paires de droites de Simson de $P_{1}$ et~$P_{2}$ par rapport aux triangles $A_{2}A_{3}A_{4}$, $A_{1}A_{3}A_{4}$, $A_{1}A_{2}A_{4}$ et $A_{1}A_{2}A_{3}$ sont alignées. Cette droite est la droite de Cantor des points $P_{1}$ et $P_{2}$ par rapport au quadrilatère $A_{1}A_{2}A_{3}A_{4}$.
- Code:
% TeXgraph version 1.94 beta-7.2
% Fenetre Xmin Xmax Ymin Ymax Xscale Yscale
100#-1.5#1.5#-1.2#1.5#4#4##
% Marges gauche droite haut bas cadre gestion_couleur comptgraph
101#0#0#0#0#0#1#27##
% Affectation des Variables theta et phi et type de perspective
18##[theta:=0.5236, phi:=1.0472,OriginalCoord(1),IdMatrix(),IdMatrix3D(),ModelView(ortho)]##
% Déclaration des Variables Globales
15#A1#exp(1.45*i*pi)##
15#A2#exp(-i*pi/6)##
15#A3#exp(1.2*i*pi/5)##
15#P#exp(0.9*i*pi)##
15#A4#exp(3.2*i*pi/5)##
15#P12#proj(P,A1,A2)##
15#P23#proj(P,A2,A3)##
15#P24#proj(P,A2,A4)##
15#P34#proj(P,A3,A4)##
15#P13#proj(P,A1,A3)##
15#Q#exp(1.95*i*pi)##
15#Q12#proj(Q,A1,A2)##
15#Q13#proj(Q,A1,A3)##
15#Q23#proj(Q,A2,A3)##
15#Q24#proj(Q,A2,A4)##
15#Q34#proj(Q,A3,A4)##
15#D1#[P23,P24] Inter [Q23,Q24]##
15#D2#[P13,P34] Inter [Q13,Q34]##
15#D3#[P12,P24] Inter [Q12,Q24]##
15#D4#[P12,P23] Inter [Q12,Q23]##
% Déclaration des Macros
% Déclaration des Eléments graphiques
% Quadri (Ligne Polyg.)
18##[Width:=5]##
12#Quadri#[ A1,A2,A3,A4 ]#1#0##
% Cercle (Cercle)
18##[Width:=2]##
7#Cercle#[ 0,1 ]##
% LabA1 (Utilisateur)
18##[tMin:=-2,tMax:=2]##
14#LabA1#LabelDot(A1,"$A_{1}$","S",1)#-1##
% LabA2 (Utilisateur)
14#LabA2#LabelDot(A2,"$A_{2}$","SE",1)#-1##
% LabA3 (Utilisateur)
14#LabA3#LabelDot(A3,"$A_{3}$","N",1)#-1##
% LabP (Utilisateur)
14#LabP#LabelDot(P,"$P_{1}$","O",1)#-1##
% Cantor (Droite)
18##[Width:=4,LineStyle:=1]##
6#Cantor#[ D1,D2 ]#0#0##
% L4 (Droite)
18##[Width:=2,LineStyle:=0]##
6#L4#[ P12,P23 ]#0#0##
% L3 (Droite)
6#L3#[ P12,P24 ]#0#0##
% LabA4 (Utilisateur)
18##[tMin:=-1.5,tMax:=1.5]##
14#LabA4#LabelDot(A4,"$A4$","NO",1)#-1##
% L1 (Droite)
6#L1#[ P23,P24 ]#0#0##
% L2 (Droite)
6#L2#[ P13,P34 ]#0#0##
% M1 (Droite)
6#M1#[ Q23,Q24 ]#0#0##
% M2 (Droite)
6#M2#[ Q13,Q34 ]#0#0##
% M3 (Droite)
6#M3#[ Q12,Q24 ]#0#0##
% M4 (Droite)
6#M4#[ Q12,Q23 ]#0#0##
% LabD1 (Utilisateur)
14#LabD1#LabelDot(D1,"$D_{1}$","SE",1)#-1##
% LabD2 (Utilisateur)
14#LabD2#LabelDot(D2,"$D_{2}$","N",1)#-1##
% LabD4 (Utilisateur)
14#LabD4#LabelDot(D4,"$D_{4}$","E",1)#-1##
% LabD3 (Utilisateur)
14#LabD3#LabelDot(D3,"$D_{3}$","NO",1)#-1##
% Labl2 (Utilisateur)
18##[LabelStyle:=1]##
14#Labl2#[
$x:=rectangle(Get(L2)),
Label( Re(x[2]+0.05)+i*Im(x[2]), "$l_{2}$"),
$y:=rectangle(Get(M2)),
Label( Re(y[1])+0.1+i*Im(y[2]), "$m_{2}$"),
]#-1##
% Labl1 (Utilisateur)
18##[LabelStyle:=9]##
14#Labl1#[
$x:=rectangle(Get(L1)),
Label( Re(x[2])+i*(Im(x[2]+0.1)), "$l_{1}$"),
$y:=rectangle(Get(M1)),
Label( Re(y[1]+0.1)+i*(Im(y[2])), "$m_{1}$"),
]#-1##
% Labl3 (Utilisateur)
18##[LabelStyle:=1]##
14#Labl3#[
$x:=rectangle(Get(L3)),
Label( Re(x[2])-0.05+i*Im(x[1]), "$l_{3}$"),
$y:=rectangle(Get(M3)),
Label( Re(y[1])+i*Im(y[1])+0.1*i, "$m_{3}$"),
]#-1##
% Labl4 (Utilisateur)
18##[LabelStyle:=10]##
14#Labl4#[
$x:=rectangle(Get(L4)),
Label( Re(x[2]-0.05)+i*Im(x[1]), "$l_{4}$"),
$y:=rectangle(Get(M4)),
Label( Re(y[2])+i*Im(y[2])-0.1*i, "$m_{4}$"),
]#-1##
% LabQ (Utilisateur)
18##[LabelStyle:=0]##
14#LabQ#LabelDot(Q,"$P_{2}$","E",1)#-1##
Soit $A_{1}A_{2}A_{3}A_{4}$ un quadrilatère inscrit dans un cercle et $P_{1}$ et $P_{2}$ deux points de ce cercle. Les quatre intersections des quatre paires de droites de Simson de $P_{1}$ et~$P_{2}$ par rapport aux triangles $A_{2}A_{3}A_{4}$, $A_{1}A_{3}A_{4}$, $A_{1}A_{2}A_{4}$ et $A_{1}A_{2}A_{3}$ sont alignées. Cette droite est la droite de Cantor des points $P_{1}$ et $P_{2}$ par rapport au quadrilatère $A_{1}A_{2}A_{3}A_{4}$.
Dernière édition par P.Fradin le Sam 1 Nov - 16:54, édité 1 fois (Raison : Ajout de la figure)
Page 1 sur 2 • 1, 2
Page 1 sur 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|