Linhas ortogonais e rotação

Linhas ortogonais e rotação

É possível modificar o código para apenas especificar os pontos A, B e C, depois desenhar um ângulo reto de C apenas dando um comprimento e encontrar um ponto D, depois especificando um ângulo e comprimento para encontrar um ponto E e desenhar os 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} 

Responder1

Podemos colocar pontos D com:

  • uma rotação do centro C e do ângulo pi/2 do ponto B, obtemos B'
  • desenhe a meia linha BB'
  • desenhe um círculo com centro C e raio 2
  • o ponto de intersecção é o ponto D

Procedemos da mesma maneira para o ponto E.

Temos em tkz-euclide:

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

Também podemos usar tkz-elements, requer compilação emlualatex

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

insira a descrição da imagem aqui

Responder2

Seu problema é simplesmente resolvido usando tikza 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}

insira a descrição da imagem aqui

ou um caso, quando a linha a - b não é 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}

insira a descrição da imagem aqui

Responder3

Sem dúvida existe uma tkz-euclidesintaxe, mas eu não falo francês, então continuo com TikMétodos Z.

A imagem a seguir sobrepõe os resultados da implementação do procedimento alternativo solicitado aos resultados do método original.

método alternativo sobreposto

Obviamente, você não precisa dos pontos originais ou da scopesubstituição do código novo pelo antigo.

Não sei se escolhi o ponto pretendido para find E, mas você pode adaptar o método para tomar o ponto que precisar 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}

informação relacionada