그려진 중심에 두 개의 동심원이 있습니다 O
. 나는 더 작은 원의 반지름을 로 지정합니다 1
. 더 큰 원의 반지름은 내접 각도가 LMN
측정 20
각도를 갖고, 반지름으로 이등분되고 , 에서 OM
작은 원에 접하도록 결정되며 각도 와 측정 각도를 갖습니다.S
T
SOM
TOM
80
내 관심사는 코드가 MN
그려지지 않는다는 것입니다. 코드 LM
는 드로우이지만 코드는 아닙니다 MN
. 합동 화음의 길이를 보여주는 계산은 다음과 LM
같습니다 MN
.
`triangle{OSM}` and `triangle{OTM}` are congruent, right triangles.
Since `OM` bisects `angle{LMN}`, and the measure of `angle{LMN}` is 20 degrees,
`angle{LMO}` and `angle{NMO` both have measure `10` degrees.
r is the radius of the smaller circle.
According to the Law of Sines, |OM| = r/sin(10). By the Pythagorean Theorem,
|MS| = |MT| = (r/sin(10))\sqrt{1 - sin^{2}(10)} =(r/sin(10))cos(10) = r*cot(10).
나는 선언한다 r=1
. 따라서 더 큰 원의 반지름은 입니다 cot(10)
. 다음 명령을 사용하면 angle{LMN}
더 큰 삼각형에 내접 각도가 있어야 한다고 예상했습니다.
\coordinate (M) at ({-cot(10)},0);
\coordinate (L) at ($(M) +(10:{2*cot(10)})$);
\coordinate (N) at ($(M) +(-10:{2*cot(10)})$);
그런 일은 발생하지 않았 LM
으며 및 MN
의 원을 약간 지나서 그려집니다 . 어떻게 이런 일이 발생하나요?M
N
패키지의 실수를 보완하기 위해 다음 명령을 사용했습니다 calc
.
\draw[name path=bigger_circle] (O) circle ({cot(10)});
\path[name path=chord_LM] (M) -- (L);
\draw[name path=chord_MN] (M) -- (N);
\coordinate[name intersections={of=bigger_circle and chord_LM, by=corrected_location_for_L}];
\coordinate[name intersections={of=bigger_circle and chord_MN, by=corrected_location_for_N}];
코드가 LM
그려져 있는데 N
에 있는 것 같아 M
코드가 MN
그려지지 않습니다.
\documentclass{amsart}
\usepackage{tikz}
\usetikzlibrary{calc,intersections}
\begin{document}
\begin{tikzpicture}
%Two concentric circles are drawn.
%
\coordinate (O) at (0,0);
\draw[fill] (O) circle (1.5pt);
\draw (O) circle (1);
\draw[name path=bigger_circle] (O) circle ({cot(10)});
%
%
\coordinate (S) at (100:1);
\draw[fill] (S) circle (1.5pt);
\coordinate (T) at (-100:1);
\draw[fill] (T) circle (1.5pt);
%
\coordinate (M) at ({-cot(10)},0);
%
\coordinate (L) at ($(M) +(10:{2*cot(10)})$);
\coordinate (N) at ($(M) +(-10:{2*cot(10)})$);
%
\path[name path=chord_LM] (M) -- (L);
\path[name path=chord_MN] (M) -- (N);
%
%The calc package is drawing the chords LM and MN too long. So, the intersections package is used.
%
\coordinate[name intersections={of=bigger_circle and chord_LM, by=corrected_location_for_L}];
\coordinate[name intersections={of=bigger_circle and chord_MN, by=corrected_location_for_N}];
%
\draw (M) -- (corrected_location_for_L);
\draw[green] (M) -- (corrected_location_for_N);
%The labels for the points are typeset.
\path node[anchor=west, inner sep=0, font=\footnotesize] at ($(O) +(0.15,0)$){$O$};
\path node[anchor=east, inner sep=0, font=\footnotesize] at ($(M) +(-0.15,0)$){$M$};
\path let \p1=($(L)-(M)$), \n1={atan(\y1/\x1)} in node[anchor={\n1+180}, inner sep=0, font=\footnotesize] at ($(corrected_location_for_L) +({\n1}:0.15)$){$L$};
\path let \p1=($(M)-(N)$), \n1={atan(\y1/\x1)} in node[anchor={\n1+180}, inner sep=0, font=\footnotesize] at ($(corrected_location_for_N) +({\n1}:0.15)$){$N$};
\path node[anchor={80-180}, inner sep=0, font=\footnotesize] at ($(S) +(80:0.15)$){$S$};
\path node[anchor={-80+180}, inner sep=0, font=\footnotesize] at ($(T) +(-80:0.15)$){$T$};
\draw[fill=green] (corrected_location_for_L) circle (2pt);
\draw[fill=green] (corrected_location_for_N) circle (2pt);
\end{tikzpicture}
\end{document}
답변1
교차점을 잘못 선택했습니다. 각 선은 원하는 지점에서 원과 만납니다.그리고에 M
. 어느 지점을 선택하는지 확실히 확인하려면 sort by
교차점에 대한 옵션을 사용해야 합니다. 귀하의 경우에는 코드에 따른 순서를 사용하는 것이 가장 적합합니다. 예를 들어 첫 번째 교차점 세트에 대해 작성할 수 있습니다.
\coordinate[name intersections={of=bigger_circle and chord_ML,
by={tmp,corrected_location_for_L}, sort by=chord_ML}];
교차점을 순서대로 정렬하고 및 chord_ML
라벨을 지정합니다 .tmp
corrected_location_for_L
\documentclass{amsart}
\usepackage{tikz}
\usetikzlibrary{calc,intersections}
\begin{document}
\begin{tikzpicture}
%Two concentric circles are drawn.
%
\coordinate (O) at (0,0);
\draw[fill] (O) circle (1.5pt);
\draw (O) circle (1);
\draw[name path=bigger_circle] (O) circle ({cot(10)});
%
%
\coordinate (S) at (100:1);
\draw[fill] (S) circle (1.5pt);
\coordinate (T) at (-100:1);
\draw[fill] (T) circle (1.5pt);
%
\coordinate (M) at ({-cot(10)},0);
%
\coordinate (L) at ($(M) + (10:{2*cot(10)})$);
\coordinate (N) at ($(M) + (-10:{2*cot(10)})$);
%
\path[name path=chord_ML] (M) -- (L);
\path[name path=chord_MN] (M) -- (N);
%
%The calc package is drawing the chords LM and MN too long. So, the intersections package is used.
%
\coordinate[name intersections={of=bigger_circle and chord_ML,
by={tmp,corrected_location_for_L}, sort by=chord_ML}];
\coordinate[name intersections={of=bigger_circle and chord_MN,
by={tmp,corrected_location_for_N}, sort by=chord_MN}];
%
\draw (M) -- (corrected_location_for_L);
\draw[green] (M) -- (corrected_location_for_N);
%The labels for the points are typeset.
\path node[anchor=west, inner sep=0, font=\footnotesize] at ($(O) +(0.15,0)$){$O$};
\path node[anchor=east, inner sep=0, font=\footnotesize] at ($(M) +(-0.15,0)$){$M$};
\path let \p1=($(L)-(M)$), \n1={atan(\y1/\x1)} in node[anchor={\n1+180}, inner sep=0, font=\footnotesize] at ($(corrected_location_for_L) +({\n1}:0.15)$){$L$};
\path let \p1=($(M)-(N)$), \n1={atan(\y1/\x1)} in node[anchor={\n1+180}, inner sep=0, font=\footnotesize] at ($(corrected_location_for_N) +({\n1}:0.15)$){$N$};
\path node[anchor={80-180}, inner sep=0, font=\footnotesize] at ($(S) +(80:0.15)$){$S$};
\path node[anchor={-80+180}, inner sep=0, font=\footnotesize] at ($(T) +(-80:0.15)$){$T$};
\draw[fill=green] (corrected_location_for_L) circle (2pt);
\draw[fill=green] (corrected_location_for_N) circle (2pt);
\end{tikzpicture}
\end{document}
답변2
선의 길이는 잘 모르겠지만 잘못된 라벨 위치는 잘못된 교차점을 사용하고 있기 때문입니다.
원과 현 사이에는 두 개의 교차점이 있습니다. 하나는 에 M
있고 다른 하나 는 L
/ 에 있습니다 N
. 을 사용할 때 첫 번째 가져오기 와 두 번째 가져오기를 사용하는 경우 by={a}
TikZ가 찾은 첫 번째 교차점에는 이름이 지정됩니다 .{a}
by={a,b}
a
b
한 경우에는 올바른 교차로를 얻었지만 다른 경우에서는 그렇지 않은 이유가 정확히 무엇인지 확실히 말할 수는 없지만 TikZ가 교차로를 찾는 방법 때문일 것입니다. 예를 들어, 원을 따라 0도에서 시작하여 시계 반대 방향으로 작업한다고 가정하면 ML
첫 번째 교차점은 에 있고 L
두 번째 교차점은 에 있습니다 M
. 의 경우 MN
첫 번째 교차점은 에 있을 것입니다 M
.
따라서 아래에는 원하는 작업을 수행하는 완전한 코드가 있습니다. 또한 주로 레이블이 그려지는 방식에서 몇 가지 다른 사항도 변경했지만 물론 자신만의 방법을 선호한다면 이를 무시할 수 있습니다.
\documentclass{amsart}
\usepackage{tikz}
\usetikzlibrary{calc,intersections}
\begin{document}
\begin{tikzpicture}[every label/.append style={font=\footnotesize}]
%Two concentric circles are drawn.
%
\coordinate [label=right:{$O$}] (O) at (0,0);
\draw (O) circle (1);
\draw[name path=bigger_circle] (O) circle[radius={cot(10)}];
%
%
\coordinate [label=above:{$S$}] (S) at (100:1);
\coordinate [label=below:{$T$}] (T) at (-100:1);
%
\foreach \x in {O,S,T}
\draw[fill] (\x) circle (1.5pt);
\coordinate [label=left:{$M$}] (M) at ({-cot(10)},0);
%
\coordinate (L) at ($(M) +(10:{2*cot(10)})$);
\coordinate (N) at ($(M) +(-10:{2*cot(10)})$);
%
\path[name path=chord_LM] (M) -- (L);
\path[name path=chord_MN] (M) -- (N);
%
%The calc package is drawing the chords LM and MN too long. So, the intersections package is used.
%
\path[name intersections={of=bigger_circle and chord_LM, by={corrected_location_for_L,i}}];
\path[name intersections={of=bigger_circle and chord_MN, by={i,corrected_location_for_N}}];
%
\draw (M) -- (corrected_location_for_L);
\draw[green] (M) -- (corrected_location_for_N);
\draw[fill=green] (corrected_location_for_L) circle (2pt);
\draw[fill=green] (corrected_location_for_N) circle (2pt);
\node [font=\footnotesize] at ($(L)!-2mm!(M)$) {$L$};
\node [font=\footnotesize] at ($(N)!-2mm!(M)$) {$N$};
\end{tikzpicture}
\end{document}