Я изучаю TikZ с помощью pgfmanual. Приведенный пример выглядит следующим образом:
На данный момент мне удалось достичь следующего:
Код выглядит следующим образом:
\documentclass{article}
\usepackage{tikz}
\tikzset{help lines/.style=very thin}
\tikzset{My Grid/.style={help lines,color=blue!50}}
\begin{document}
\begin{tikzpicture}
\draw[My Grid] (-4,-4) grid (4,4);
\draw (-5,0) node[left] {$(-5,0)$} -- (5,0) node[right] {$(5,0)$};
\draw (0,-5) node[below] {$(0,-5)$} -- (0,5) node[above] {$(0,5)$};
\draw (0,0) circle [radius=3cm];
\shadedraw[left color=gray, right color=green, draw=green!50!black] (0,0) -- (0.75,0) arc [start angle=0, end angle=30, radius=1cm] -- cycle;
\draw[red, very thick] (30:3cm) -- (2.6,0);
\draw [very thick,orange] (3,0) -- (3,1.7);
\end{tikzpicture}
\end{document}
Для нахождения пересечения наклона и касательной pgfmanual использует концепцию библиотеки путей и пересечений, что весьма запутанно.
Есть ли более простой способ заставить систему нарисовать линию из точки А до sin(30) как точки В и нарисовать тангенс угла пропорционально, вместо использования прямых чисел?
Пожалуйста, предложите альтернативу, кроме пересечений, полярных координат и путей. Потому что pgfmanual уже использует их, что трудно понять.
решение1
Так как в cos(30)
и tan(30)
есть скобки, то необходимо поместить эти функции в фигурные скобки{}
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{angles,quotes}
\tikzset{help lines/.style=very thin}
\tikzset{My Grid/.style={help lines,color=blue!50}}
\begin{document}
\begin{tikzpicture}
\draw[My Grid] (-4,-4) grid (4,4);
\draw (-5,0) node[left] {$(-5,0)$} -- (5,0) node[right] {$(5,0)$};
\draw (0,-5) node[below] {$(0,-5)$} -- (0,5) node[above] {$(0,5)$};
\draw (0,0) circle [radius=3cm];
% \shadedraw[left color=gray, right color=green, draw=green!50!black]
% (0,0) -- (0.75,0) arc [start angle=0, end angle=30, radius=0.75cm] -- cycle;
\coordinate(O)at(0,0);
\draw[red, very thick] (30:3cm)coordinate(A)
--({3*cos(30)},0)coordinate(B);
\draw [very thick,orange] (3,0) -- (3,{3*tan(30)})coordinate(C);
\pic[fill=green!50!black,
angle radius=0.75cm,
angle eccentricity=1.2,
"\(\alpha\)"] {angle=B--O--A};
\draw (O)--(C);
\end{tikzpicture}
\end{document}
решение2
Вот альтернативаХороший ответ Хафида, идя дальше в направлении, в котором вы начали. Вам не нужно использовать никакую тригонометрическую функцию. Достаточно использовать только полярные координаты и проекции.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc,angles,quotes}
\tikzset{help lines/.style=very thin}
\tikzset{My Grid/.style={help lines,color=blue!50}}
\begin{document}
\begin{tikzpicture}
\draw[My Grid] (-4,-4) grid (4,4);
\draw (-5,0) node[left] {$(-5,0)$} -- (5,0) node[right] {$(5,0)$};
\draw (0,-5) node[below] {$(0,-5)$} -- (0,5) node[above] {$(0,5)$};
\draw (0,0) coordinate (O) circle [radius=3cm];
\draw[red, very thick] (30:3cm) coordinate (A)
% (30:3cm) is a polar coordinate with angle 30 (degrees) and radius 3cm
-- (0,0-|A) coordinate(Ax)
% (0,0-|30:3cm) is a point that has the x coordinate of A and y=0
% see https://tex.stackexchange.com/a/401429/121799 for more details
node[midway,left]{$\sin\alpha$};
\draw [very thick,orange] (3,0) -- (intersection cs:
first line={(O)--(A)},second line={(3,0)--(3,3)}) coordinate(A')
% (A') is at the intersections of the lines OA and the vertical line through (3,0)
node[midway,right]{$\tan\alpha$};
\pic[fill=green!50,angle radius=1cm,
angle eccentricity=0.6, "$\alpha$"] {angle=Ax--O--A};
% that's almost a 1-1 copy of what you can find on p. 560 of the manual
\draw (O) -- (A');
\draw[very thick,blue] (O) -- (Ax) node[midway,below]{$\cos\alpha$};
\end{tikzpicture}
\end{document}