Líneas ortogonales y rotación.

Líneas ortogonales y rotación.

Es posible modificar el código para especificar solo los puntos A, B y C, luego dibujar un ángulo recto desde C simplemente dando una longitud y encontrar un punto D, luego especificando un ángulo y una longitud para encontrar un punto E y dibujar los segmentos. .

\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} 

Respuesta1

Podemos colocar los puntos D con:

  • una rotación de centro C y un ángulo pi/2 del punto B, obtenemos B'
  • dibuja la media línea BB'
  • Dibuja una circunferencia con centro C y radio 2.
  • el punto de intersección es el punto D

Procedemos de la misma manera para el punto E.

Tenemos en tkz-euclide:

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

También podemos usar tkz-elements, requiere compilación enlualatex

% !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} 

ingrese la descripción de la imagen aquí

Respuesta2

Su problema se resuelve simplemente usando tikzla biblioteca 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}

ingrese la descripción de la imagen aquí

o un caso, cuando la línea a - b no es horizontal:

\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}

ingrese la descripción de la imagen aquí

Respuesta3

Sin duda hay una tkz-euclidesintaxis, pero no hablo francés, así que me quedo con Ti.kMétodos Z.

La siguiente imagen superpone los resultados de la implementación del procedimiento alternativo solicitado sobre los resultados del método original.

método alternativo superpuesto

Obviamente, no necesita los puntos originales o scopesi sustituye el código nuevo por el antiguo.

No sé si elegí el punto que buscaba E, pero puedes adaptar el método para tomar el punto que necesites como base.

\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}

información relacionada