Orthogonale Linien und Rotation

Orthogonale Linien und Rotation

Ist es möglich, den Code so zu ändern, dass nur die Punkte A, B und C angegeben werden, dann durch Angabe einer Länge einen rechten Winkel von C aus gezeichnet und ein Punkt D gefunden wird und anschließend durch Angabe eines Winkels und einer Länge ein Punkt E gefunden und die Segmente gezeichnet werden?

\documentclass{article}   
\usepackage{tkz-euclide}

\begin{document}

\begin{tikzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(3,0){B}
\tkzDefPoint(1.5,0){C}
\tkzDefPoint(1.5,2){D}
\tkzDefPoint(2,3){E}

\tkzDrawSegments(A,B C,D)
\tkzDrawSegment[color=red](C,E)

\tkzLabelPoint[left](A){$A$}
\tkzLabelPoint[right](B){$B$}
\tkzLabelPoint[below](C){$C$}
\tkzLabelPoint[above](D){$D$}
\tkzLabelPoint[above](E){$E$}

\tkzDrawPoints[fill=gray](A,B,C,D,E)
\end{tikzpicture}

\end{document} 

Antwort1

Wir können die Punkte D wie folgt platzieren:

  • eine Drehung des Mittelpunktes C und des Winkels pi/2 des Punktes B ergibt B'
  • Zeichne die Halblinie BB'
  • Zeichne einen Kreis mit Mittelpunkt C und Radius 2
  • der Schnittpunkt ist Punkt D

Für den Punkt E verfahren wir analog.

Wir haben in tkz-euclide:

  • \tkzDefPointBy[rotation=center C angle 90](B)
  • \tkzDefCircle[R](C,2)
  • \tkzInterLC

Wir können auch verwenden tkz-elements, erfordert die Kompilierung inlualatex

% !TeX TS-program = lualatex
\documentclass{article}  
\usepackage{tkz-elements}
\usepackage{tkz-euclide}

\begin{document}
\begin{tkzelements}
  local lengthCD = 2
  local lengthCE = 3
  local angBCE = math.pi/3
  z.A = point: new (0,0)
  z.B = point: new (3,0)
  L.AB = line : new (z.A,z.B)
  z.C = L.AB.mid
  --
  z.Bp = z.C : rotation (math.pi/2,z.B)
  L.CBp = line : new (z.C,z.Bp)
  C.CD = circle : radius (z.C,lengthCD)
  z.D,_ = intersection (L.CBp,C.CD)
  --
  z.Bpp = z.C : rotation (angBCE,z.B)
  L.CBpp = line : new (z.C,z.Bpp)
  C.CE = circle : radius (z.C,lengthCE)
  z.E,_ = intersection (L.CBpp,C.CE)
  \end{tkzelements}
\begin{tikzpicture}
  \draw[help lines](0,0)grid(3,4);
  \tkzGetNodes

\tkzDrawSegments(A,B C,D)
\tkzDrawSegment[color=red](C,E)

\tkzLabelPoint[left](A){$A$}
\tkzLabelPoint[right](B){$B$}
\tkzLabelPoint[below](C){$C$}
\tkzLabelPoint[above](D){$D$}
\tkzLabelPoint[above](E){$E$}

\tkzDrawPoints[gray](A,...,E)

\end{tikzpicture}
\end{document} 

Bildbeschreibung hier eingeben

Antwort2

Ihr Problem lässt sich einfach mithilfe tikzder Bibliothek lösen calc:

\documentclass[margin=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
    \begin{tikzpicture}[
every node/.style = {circle, fill=gray, inner sep=1pt, outer sep=0pt},
every label/.append style = {text=black}
                        ]
\node[label= left:$A$] (a) at (0,0) {};
\node[label=right:$B$] (b) at (3,0) {};
\draw   (a) -- (b);
\node[label=below:$C$] (c) at (1.5,0) {};
% line perpendicular to line a -- b from point c
\draw   (c) -- ($(c)!20mm!90:(b)$) node[label=D] {}; 
% drawn with selected angle (for example 60 degree)  from point c
\draw[red]   (c) -- ($(c)!30mm!60:(b)$) node[label=E] {}; 
\end{tikzpicture}

\end{document}

Bildbeschreibung hier eingeben

oder ein Fall, wenn die Linie a - b nicht horizontal ist:

\documentclass[margin=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
    \begin{tikzpicture}[
every node/.style = {circle, fill=gray, inner sep=1pt, outer sep=0pt},
every label/.append style = {text=black}
                        ]
\node[label= left:$A$] (a) at (0,0) {};
\node[label=right:$B$] (b) at (3,1) {};
\draw   (a) -- (b);
\node[label=below:$C$] (c) at ($(a)!0.5!(b)$)  {};
%
\draw   (c) -- ($(c)!20mm!90:(b)$) node[label=D] {};
%
\draw[red]   (c) -- ($(c)!30mm!60:(b)$) node[label=E] {};
\end{tikzpicture}

\end{document}

Bildbeschreibung hier eingeben

Antwort3

Zweifellos gibt es eine tkz-euclideSyntax, aber ich spreche kein Französisch, also bleibe ich bei TikZ-Methoden.

Das folgende Bild überlagert die Ergebnisse der Implementierung des angeforderten alternativen Verfahrens mit den Ergebnissen der ursprünglichen Methode.

überlagerte alternative Methode

Offensichtlich benötigen Sie weder die ursprünglichen Punkte noch den scopeCode, der den alten durch einen neuen ersetzt.

Ich weiß nicht, ob ich den gewünschten Punkt ausgewählt habe E, aber Sie können die Methode anpassen, um jeden gewünschten Punkt als Basis zu verwenden.

\documentclass{standalone}   
\usepackage{tkz-euclide}

\begin{document}

\begin{tikzpicture}
  \tkzDefPoint(0,0){A}
  \tkzDefPoint(3,0){B}
  \tkzDefPoint(1.5,0){C}
  \tkzDefPoint(1.5,2){D}
  \tkzDefPoint(2,3){E}
  
  \tkzDrawSegments(A,B C,D)
  \tkzDrawSegment[color=red](C,E)
  
  \tkzLabelPoint[left](A){$A$}
  \tkzLabelPoint[right](B){$B$}
  \tkzLabelPoint[below](C){$C$}
  \tkzLabelPoint[above](D){$D$}
  \tkzLabelPoint[above](E){$E$}
  
  \tkzDrawPoints[fill=gray](A,B,C,D,E)
  
  \begin{scope}[draw=blue,every label/.append style=blue]
    \path (C) ++(0pt,2) coordinate [label=above:$D$] (d);
    \path (d) ++(63:1.12) coordinate [label=above:$E$] (e);
    \tkzDrawSegments(A,B C,d C,e)
  \end{scope}

  
\end{tikzpicture}

\end{document}

verwandte Informationen