Hola usuario de nuestra web, hemos encontrado la solución a lo que andabas buscando, continúa leyendo y la hallarás más abajo.
Solución:
Solo por diversión: solo usando el calc
Biblioteca. Solo se necesita la ley del coseno. Necesitas especificar los tres lados sD
, sE
y sF
.
documentclass[tikz,border=3mm]standalone
usetikzlibrarycalc
begindocument
begintikzpicture[declare function=cosinelaw(a,b,c)=acos((a*a+b*b-c*c)/(2*a*b));
sD=4.29;sE=6.25;sF=3.50;,
pics/right angle/.style=code=
draw (-abs(#1),0) ,
pics/right angle/.default=0.5]
draw (0,0) coordinate[label=below left:$F$] (F)
-- node[midway,above,sloped]$625$ (sE,0) coordinate[label=below right:$D$] (D)
-- node[midway,above,sloped]$350$
(intersection cs:first line=(F)--($(F)+(cosinelaw(sE,sD,sF):1)$),
second line=(D)--($(D)+(-cosinelaw(sE,sF,sD):1)$))
coordinate[label=above right:$E$] (E) --
node[midway,above,sloped]$429$ cycle
(intersection cs:first line=(F)--($(F)+(cosinelaw(sE,sD,sF)/2-90:1)$),
second line=(D)--($(D)+(-cosinelaw(sE,sF,sD)/2-90:1)$))
coordinate[label=below:$B$] (B)
(intersection cs:first line=(F)--($(F)+(cosinelaw(sE,sD,sF)/2-90:1)$),
second line=(E)--($(E)+(180+cosinelaw(sE,sD,sF)+cosinelaw(sD,sF,sE)/2-90:1)$))
coordinate[label=above:$A$] (A)
(intersection cs:first line=(A)--(E),
second line=(B)--(D))
coordinate[label=above:$C$] (C)
(A) -- (B) -- (C) -- cycle
(A) edge[dashed,shorten >=-1cm] (D)
(B) edge[dashed,shorten >=-1cm] (E)
(C) edge[dashed,shorten >=-1cm] (F);
path (A) -- pic[sloped,pos=1,xscale=-1]right angle(D);
path (B) -- pic[sloped,pos=1,xscale=-1]right angle(E);
path (C) -- pic[sloped,pos=1]right angle(F);
endtikzpicture
enddocument
Reflexionando, la solución más corta:
Explicacion:
El incentro I de DEF y el ortocentro H de ABC son idénticos.
A, E, I, F son puntos cocíclicos. Con tkzDefCircle[circum](E,I,F) tkzGetPointca tkzGetLengthra
Consigo el centro y el radio.
Entonces, la intersección de este círculo con la bisectriz DI da el punto A. Entonces es fácil obtener B y C.
Poca mejora: obtenemos U, V, W con tkzDefPointsBy[homothety=center I ratio 1.1](D,E,F)U,V,W
documentclass[margin=10pt]standalone
usepackagetkz-euclide
begindocument
begintikzpicture[lab/.style=sloped,fill=white,font=small]
pgfmathsetmacroa350/100*2/3
pgfmathsetmacrob429/100*2/3
pgfmathsetmacroc625/100*2/3
beginscope[rotate=73.74]
tkzDefPoints0/0/F,c/0/D
endscope
tkzInterCC[R](F,b cm)(D,a cm) tkzGetFirstPointE
tkzDefTriangleCenter[in](D,E,F) tkzGetPointI % incenter or H orthocenter
tkzDefCircle[circum](E,I,F) tkzGetPointca tkzGetLengthra
tkzDefLine[orthogonal=through D](D,I) tkzGetPointd
tkzInterLC[R](D,I)(ca,ra pt) tkzGetSecondPointA
tkzInterLL(A,F)(E,I) tkzGetPointB
tkzInterLL(B,D)(A,E) tkzGetPointC
tkzDefPointsBy[homothety=center I ratio 1.1](D,E,F)U,V,W
tkzDrawPolygon(D,E,F)
tkzDrawPolygon(A,B,C)
tkzDrawLines[add = 0 and 0.2,densely dashed](C,F A,D B,E)
tkzMarkRightAngles[fill=orange!20](C,D,U A,E,V B,F,W)
endtikzpicture
enddocument
A) Con tu código (sin muchos cambios):
quite usetkzobjall
porque usé la versión 3.05 y pst-euclide
. yo solo rotate
un poco, el punto fijo D.
documentclass[margin=10pt]standalone
usepackagetkz-euclide
begindocument
begintikzpicture
pgfmathsetmacroa350/100*2/3 % BC
pgfmathsetmacrob429/100*2/3 % AC
pgfmathsetmacroc625/100*2/3 % AB
beginscope[rotate=74]
tkzDefPoints0/0/F,c/0/D
endscope
tkzInterCC[R](F,b cm)(D,a cm) tkzGetFirstPointE
tkzDrawPolygon(D,E,F)
tkzDefLine[bisector](E,D,F)tkzGetPointl
tkzInterLL(E,F)(D,l) tkzGetPointL
tkzDefLine[orthogonal=through D](D,L) tkzGetPointd
tkzDefLine[bisector](D,E,F)tkzGetPointm
tkzInterLL(D,F)(E,m) tkzGetPointM
tkzDefLine[orthogonal=through E](E,M) tkzGetPointe
tkzDefLine[bisector](E,F,D)tkzGetPointn
tkzInterLL(D,E)(F,n) tkzGetPointN
tkzDefLine[orthogonal=through F](F,N) tkzGetPointf
tkzInterLL(D,d)(E,e) tkzGetPointC
tkzInterLL(F,f)(E,e) tkzGetPointA
tkzInterLL(D,d)(F,f) tkzGetPointB
tkzDrawPolygon(A,B,C)
tkzDrawLines[add = 0 and 0.2,densely dashed](C,F A,D B,E)
tkzDefPointBy[homothety=center A ratio 1.1](D) tkzGetPointU
tkzMarkRightAngle(C,D,U)
tkzDefPointBy[homothety=center B ratio 1.1](E) tkzGetPointV
tkzMarkRightAngle[](A,E,V)
tkzDefPointBy[homothety=center C ratio 1.1](F) tkzGetPointW
tkzMarkRightAngle(B,F,W)
tkzLabelSegment[sloped,fill=white,font=small,below](D,F)$625$
tkzLabelSegment[sloped,fill=white,font=small,above](E,D)$350$
tkzLabelSegment[sloped,fill=white,font=small,below](E,F)$429$
tkzLabelPoints[right](D)
tkzLabelPoints(A,B)
tkzLabelPoints[above right](C)
tkzLabelPoints[above left](E)
tkzLabelPoints[below left](F)
endtikzpicture
enddocument
B) Mejora de su código pero sin cálculos.
La principal mejora es el uso del centro del círculo. incircle
intersección de las bisectrices con:
tkzDefTriangleCenter[in](D,E,F)
Luego, al final del código, usé tkzFindSlopeAngle(B,A)
para obtener el valor exacto del ángulo de la línea AB en relación con la línea FD. Tengo 73.74
documentclass[margin=10pt]standalone
usepackagetkz-euclide
begindocument
begintikzpicture
pgfmathsetmacroa350/100*2/3
pgfmathsetmacrob429/100*2/3
pgfmathsetmacroc625/100*2/3
beginscope[rotate=73.74] %it's possible
tkzDefPoints0/0/F,c/0/D
endscope
tkzInterCC[R](F,b cm)(D,a cm) tkzGetFirstPointE
tkzDefTriangleCenter[in](D,E,F) tkzGetPointI % incenter
tkzDefLine[orthogonal=through D](D,I) tkzGetPointd
tkzDefLine[orthogonal=through E](E,I) tkzGetPointe
tkzDefLine[orthogonal=through F](F,I) tkzGetPointf
tkzInterLL(D,d)(E,e) tkzGetPointC
tkzInterLL(F,f)(E,e) tkzGetPointA
tkzInterLL(D,d)(F,f) tkzGetPointB
tkzDefPointBy[homothety=center A ratio 1.1](D) tkzGetPointU
tkzDefPointBy[homothety=center B ratio 1.1](E) tkzGetPointV
tkzDefPointBy[homothety=center C ratio 1.1](F) tkzGetPointW
tkzDrawPolygon(D,E,F)
tkzDrawPolygon(A,B,C)
tkzDrawLines[add = 0 and 0.2,densely dashed](C,F A,D B,E)
tkzMarkRightAngle(C,D,U)
tkzMarkRightAngle[](A,E,V)
tkzMarkRightAngle(B,F,W)
tkzLabelSegment[sloped,fill=white,font=small,below](D,F)$625$
tkzLabelSegment[sloped,fill=white,font=small,above](E,D)$350$
tkzLabelSegment[sloped,fill=white,font=small,below](E,F)$429$
tkzLabelPoints[right](D)
tkzLabelPoints(A,B)
tkzLabelPoints[above right](C)
tkzLabelPoints[above left](E)
tkzLabelPoints[below left](F)
% tkzFindSlopeAngle(B,A)
% tkzGetAngleangle
% node[below=5 cm]angle; %180 - angle for the rotation
endtikzpicture
enddocument
C) Creo que es mejor obtener las coordenadas de A, B y C y luego obtener el triángulo órtico. Puede usar una parte de la respuesta del gato de Schrödinger para obtener las coordenadas. A continuación, utilicé solo un ejemplo para mostrar cómo obtener el triángulo órtico. La gran parte es obtener las coordenadas.
Con tkz-euclide
obtienes el triángulo órtico u ortogonal con una línea
tkzDefSpcTriangle[orthic](A,B,C)H_A,H_B,H_C
El triángulo órtico es uno de los triángulos específicos para tkz-euclide version 3.05 or 3.02
. Obtienes las proyecciones de A, B y C con H_A,H_B,H_C
si utiliza entonces las proyecciones se denominan A ‘, B’ y C ‘.
documentclassstandalone
usepackagetkz-euclide
begindocument
begintikzpicture
tkzDefPoints1/5/A,0/0/B,7/0/C
tkzDefSpcTriangle[orthic](A,B,C)H_A,H_B,H_C
tkzDrawPolygon[blue,fill=blue!20](A,B,C)
tkzDrawPolygon[red,fill=red!40,opacity=.5](H_A,H_B,H_C)
tkzLabelPoints(B,H_A,C) tkzLabelPoints[above right](A,H_B)
tkzLabelPoints[above left](H_C)
endtikzpicture
enddocument
Ahora puedes dibujar lo que quieras y con TilZ o con tkz-euclide.
Si desea el centro de ortodoncia u ortopedia, solo necesita utilizar: tkzOrthoCenter(A,B,C) tkzGetPointH
o
`tkzDefTriangleCenter[ortho](A,B,C) tkzGetPointH
tkzDrawPoint(H)`
Ahora, si quieres dibujar las altitudes:
tkzDrawSegments(A,H_A B,H_B C,H_C)
Pero tienes otras posibilidades. Por ejemplo, para una altitud:
tkzDrawLine[altitude](B,C,A) tkzGetPointH_C
documentclassstandalone
usepackagetkz-euclide
begindocument
begintikzpicture
tkzDefPoints1/5/A,0/0/B,7/0/C
tkzDefSpcTriangle[orthic](A,B,C)H_A,H_B,H_C
tkzDefTriangleCenter[ortho](A,B,C) tkzGetPointH
tkzDrawPoint(H)
tkzDrawPolygon[blue,fill=blue!20,opacity=.5](A,B,C)
tkzDrawPolygon[red,fill=red!40,opacity=.5](H_A,H_B,H_C)
tkzDrawSegments(A,H_A B,H_B C,H_C)
tkzLabelPoints(B,H_A,C) tkzLabelPoints[above right](A,H_B)
tkzLabelPoints[above left](H_C)
tkzMarkRightAngles[fill=gray!20,opacity=.5](A,H_A,C B,H_B,A C,H_C,A)
endtikzpicture
enddocument
Ahora, si el único problema es colocarlo en un triángulo verticalmente, puede rotar la imagen o puede redefinir los puntos fijos.
Tienes la posibilidad difundir esta noticia si te valió la pena.