Make a triangle from a orthic triangle
Just for fun: only using the calc
library. One only needs the cosine law. You need to specify the three sides sD
, sE
and sF
.
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[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) |- (0,#1);}},
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);
\end{tikzpicture}
\end{document}
On reflection, the shortest solution:
Explanation :
I incenter of DEF and H orthocenter of ABC are identical.
A,E,I,F are cocyclic points. With \tkzDefCircle[circum](E,I,F) \tkzGetPoint{ca} \tkzGetLength{ra}
I get the center and the radius.
Then the intersection of this circle with the bisector DI gives the point A. Then it is easy to get B and C.
Little improvement: we get U,V,W with \tkzDefPointsBy[homothety=center I ratio 1.1](D,E,F){U,V,W}
\documentclass[margin=10pt]{standalone}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}[lab/.style={sloped,fill=white,font=\small}]
\pgfmathsetmacro{\a}{350/100*2/3}
\pgfmathsetmacro{\b}{429/100*2/3}
\pgfmathsetmacro{\c}{625/100*2/3}
\begin{scope}[rotate=73.74]
\tkzDefPoints{0/0/F,\c/0/D}
\end{scope}
\tkzInterCC[R](F,\b cm)(D,\a cm) \tkzGetFirstPoint{E}
\tkzDefTriangleCenter[in](D,E,F) \tkzGetPoint{I} % incenter or H orthocenter
\tkzDefCircle[circum](E,I,F) \tkzGetPoint{ca} \tkzGetLength{ra}
\tkzDefLine[orthogonal=through D](D,I) \tkzGetPoint{d}
\tkzInterLC[R](D,I)(ca,\ra pt) \tkzGetSecondPoint{A}
\tkzInterLL(A,F)(E,I) \tkzGetPoint{B}
\tkzInterLL(B,D)(A,E) \tkzGetPoint{C}
\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)
\end{tikzpicture}
\end{document}
A) With your code (without much changes):
I removed \usetkzobj{all}
because I used the version 3.05 and pst-euclide
. I just rotate
a little, the fixed point D .
\documentclass[margin=10pt]{standalone}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}
\pgfmathsetmacro{\a}{350/100*2/3} % BC
\pgfmathsetmacro{\b}{429/100*2/3} % AC
\pgfmathsetmacro{\c}{625/100*2/3} % AB
\begin{scope}[rotate=74]
\tkzDefPoints{0/0/F,\c/0/D}
\end{scope}
\tkzInterCC[R](F,\b cm)(D,\a cm) \tkzGetFirstPoint{E}
\tkzDrawPolygon(D,E,F)
\tkzDefLine[bisector](E,D,F)\tkzGetPoint{l}
\tkzInterLL(E,F)(D,l) \tkzGetPoint{L}
\tkzDefLine[orthogonal=through D](D,L) \tkzGetPoint{d}
\tkzDefLine[bisector](D,E,F)\tkzGetPoint{m}
\tkzInterLL(D,F)(E,m) \tkzGetPoint{M}
\tkzDefLine[orthogonal=through E](E,M) \tkzGetPoint{e}
\tkzDefLine[bisector](E,F,D)\tkzGetPoint{n}
\tkzInterLL(D,E)(F,n) \tkzGetPoint{N}
\tkzDefLine[orthogonal=through F](F,N) \tkzGetPoint{f}
\tkzInterLL(D,d)(E,e) \tkzGetPoint{C}
\tkzInterLL(F,f)(E,e) \tkzGetPoint{A}
\tkzInterLL(D,d)(F,f) \tkzGetPoint{B}
\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) \tkzGetPoint{U}
\tkzMarkRightAngle(C,D,U)
\tkzDefPointBy[homothety=center B ratio 1.1](E) \tkzGetPoint{V}
\tkzMarkRightAngle[](A,E,V)
\tkzDefPointBy[homothety=center C ratio 1.1](F) \tkzGetPoint{W}
\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)
\end{tikzpicture}
\end{document}
B) Improvement of your code but without calculations.
The main improvement is the use of the centre of the circle incircle
intersection of the bisectors with:
\tkzDefTriangleCenter[in](D,E,F)
Then at the end of the code, I used \tkzFindSlopeAngle(B,A)
to get the exact value of the angle of the line AB in relation to line FD. I got 73.74
\documentclass[margin=10pt]{standalone}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}
\pgfmathsetmacro{\a}{350/100*2/3}
\pgfmathsetmacro{\b}{429/100*2/3}
\pgfmathsetmacro{\c}{625/100*2/3}
\begin{scope}[rotate=73.74] %it's possible
\tkzDefPoints{0/0/F,\c/0/D}
\end{scope}
\tkzInterCC[R](F,\b cm)(D,\a cm) \tkzGetFirstPoint{E}
\tkzDefTriangleCenter[in](D,E,F) \tkzGetPoint{I} % incenter
\tkzDefLine[orthogonal=through D](D,I) \tkzGetPoint{d}
\tkzDefLine[orthogonal=through E](E,I) \tkzGetPoint{e}
\tkzDefLine[orthogonal=through F](F,I) \tkzGetPoint{f}
\tkzInterLL(D,d)(E,e) \tkzGetPoint{C}
\tkzInterLL(F,f)(E,e) \tkzGetPoint{A}
\tkzInterLL(D,d)(F,f) \tkzGetPoint{B}
\tkzDefPointBy[homothety=center A ratio 1.1](D) \tkzGetPoint{U}
\tkzDefPointBy[homothety=center B ratio 1.1](E) \tkzGetPoint{V}
\tkzDefPointBy[homothety=center C ratio 1.1](F) \tkzGetPoint{W}
\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)
% \tkzGetAngle{angle}
% \node[below=5 cm]{\angle}; %180 - \angle for the rotation
\end{tikzpicture}
\end{document}
C) I think it's better to get the coordinates of A,B and C and then to get the orthic triangle. You can use a part of Schrödinger's cat answer to get the coordinates. Below I used only an example to show how to get the orthic triangle. The big part is to get the coordinates.
With tkz-euclide
you get the orthic or ortho triangle with one line
\tkzDefSpcTriangle[orthic](A,B,C){H_A,H_B,H_C}
The orthic triangle is one of the specific triangles for tkz-euclide version 3.05 or 3.02
. You get the projections of A,B and C with {H_A,H_B,H_C}
if you use {}
then the projection are named A', B' and C'.
\documentclass{standalone}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}
\tkzDefPoints{1/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)
\end{tikzpicture}
\end{document}
Now you can draw what you want and with TilZ or with tkz-euclide.
If you want the orthic or ortho center, you just need to use: \tkzOrthoCenter(A,B,C) \tkzGetPoint{H}
or
`\tkzDefTriangleCenter[ortho](A,B,C) \tkzGetPoint{H}
\tkzDrawPoint(H)`
Now if you want to draw the altitudes:
\tkzDrawSegments(A,H_A B,H_B C,H_C)
But you have other possibilities. For example for one altitude :
\tkzDrawLine[altitude](B,C,A) \tkzGetPoint{H_C}
\documentclass{standalone}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}
\tkzDefPoints{1/5/A,0/0/B,7/0/C}
\tkzDefSpcTriangle[orthic](A,B,C){H_A,H_B,H_C}
\tkzDefTriangleCenter[ortho](A,B,C) \tkzGetPoint{H}
\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)
\end{tikzpicture}
\end{document}
Now if the only problem it's to place on triangle vertically, you can rotate the picture or you can redefine the fixed points.