
Я прошел второй урок в документации tikz и познакомился с использованием \x внутри операторов foreach для итерации некоторых процессов. Однако я только что узнал, что \x может появляться без оператора foreach. Я адаптировал часть кода издругая темамаксимально упростил и в итоге получилось следующее;
\documentclass[tikz,border=10]{standalone}
\begin{document}
\begin{tikzpicture}[scale=3,very thick]
\draw[samples=500] plot (canvas polar
cs:angle=\x r,radius={50-10*sin(10*\x r)}); %50 and 10 in 50 - 10 ... control the sharpness of each curve, 10 in sin(x) controls number of curves
\end{tikzpicture}
\end{document}
что создает это изображение:
Однако я не понимаю, что делает \x в этом коде, поскольку нет ничего похожего на \foreach ... в операторе {1,...,5), который определяет диапазон значений, которые может принимать \x. Так как же \x способствует созданию этой волнистой линии и как он вообще работает в таком операторе? Кроме того, почему за ним следует r? Представляет ли r число, которое умножает значение, которое принимает \x?
решение1
Очень интересный пример! Я не просто хочу завалить вас сотнями страниц руководства, ноpgfmanual являетсяочень познавательно.
Там вы найдете:
Построение графика функции
Когда вы строите график функции, координаты данных графика можно вычислить, оценив математическое выражение. Поскольку pgf поставляется с математическим движком, вы можете указать это выражение, а затем TikZ автоматически создаст для вас нужные координаты. Поскольку этот случай довольно распространен при построении графика функции, синтаксис прост: следуя команде plot и ее локальным параметрам, вы напрямую указываете(координатное выражение). Выглядит как обычная координата, но внутри вы можете использовать специальный макрос, который есть \x
по умолчанию, но его можно изменить с помощью переменной опции.(координатное выражение)Затем оценивается для различных значений \x
и полученные координаты отображаются на графике.
[...]
/tikz/domain=<start>:<end>
(значение по умолчанию отсутствует, изначально -5:5)
Устанавливает домен, из которого берутся образцы
Синтаксис математических выражений: операторы
Иксr
: Преобразует x в градусы (предполагается, что x выражен в радианах).
(Так что в принципе то же самое, что *180/3.14
и мой комментарий)
Итак, по сути, этот фрагмент кода рисует 500 образцов из диапазона -5:5 и принимает эти значения как углы полярных координат в радианах. Затем он вычисляет радиус как 50-10*sin(10*<angle converted to degrees>)
для каждого образца. Через эти точки он рисует линию.