라벨이 지정된 위치에 조판되지 않았습니다.

라벨이 지정된 위치에 조판되지 않았습니다.

그려진 중심에 두 개의 동심원이 있습니다 O. 나는 더 작은 원의 반지름을 로 지정합니다 1. 더 큰 원의 반지름은 내접 각도가 LMN측정 20각도를 갖고, 반지름으로 이등분되고 , 에서 OM작은 원에 접하도록 결정되며 각도 와 측정 각도를 갖습니다.STSOMTOM80

내 관심사는 코드가 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의 원을 약간 지나서 그려집니다 . 어떻게 이런 일이 발생하나요?MN

패키지의 실수를 보완하기 위해 다음 명령을 사용했습니다 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라벨을 지정합니다 .tmpcorrected_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}ab

한 경우에는 올바른 교차로를 얻었지만 다른 경우에서는 그렇지 않은 이유가 정확히 무엇인지 확실히 말할 수는 없지만 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}

관련 정보