直交線と回転

直交線と回転

コードを変更して、ポイント A、B、C を指定し、長さを指定して C から直角を描き、ポイント D を見つけ、角度と長さを指定してポイント E を見つけ、線分を描画することは可能です。

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

答え1

点 D は次のように配置できます。

  • 中心Cを回転し、点Bの角度π/2で回転すると、B'が得られる。
  • 半直線BB'を描く
  • 中心C、半径2の円を描く
  • 交差点は点Dである

ポイント E についても同様に進めます。

弊社では以下のものを取り扱っておりますtkz-euclide:

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

を使用することもできますがtkz-elements、コンパイルが必要です。lualatex

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

ここに画像の説明を入力してください

答え2

tikzあなたの問題は、ライブラリを使用することで簡単に解決できます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}

ここに画像の説明を入力してください

または、線 a -- b が水平でない場合:

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

ここに画像の説明を入力してください

答え3

間違いなく構文はあるtkz-euclideが、私はフランス語を話せないので、Tiに固執する。Zメソッド。

次の画像は、要求された代替手順を実装した結果を元の方法の結果に重ねて表示したものです。

重ね合わせた代替方法

明らかに、元のポイントや、scope古いコードを新しいコードに置き換える必要はありません。

見つけるために意図したポイントを選択したかどうかはわかりませんEが、必要なポイントをベースとして取るようにメソッドを調整できます。

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

関連情報