我正在尝试\nb
从 画线(0,0)
。所有线条间距均等。
我一直收到错误“缺失数字被视为零”。我在网上发现了很多类似的错误;这些错误可以通过将数学括在{}
花括号中来解决。
我试过了,但还是不行。有人知道我的错误是什么吗?
\begin{figure}[h]
\centering
\begin{tikzpicture}
\newcommand\ir{2}%Inner radius
\newcommand\nb{5}%Number of bars
\newcommand\tta{2*pi/\nb}
\foreach \i in {1,...,\nb} {
\newcommand\ctta{{cos(deg(\i*\tta))}}
\newcommand\stta{{sin(deg(\i*\tta))}}
\newcommand\ttta{{tan(deg(\i*\tta))}}
\newcommand\ltpcx{\ir*\ctta}
\newcommand\ltpcy{\ir*\stta}
\draw[] (0,0) -- (\ltpcx,\ltpcy);
}
\end{tikzpicture}
\caption{General structure of a Data Bank in a MIDAS event.}
\label{fig:BV_structure}
\end{figure}
答案1
sin
除了使用和计算点数之外,cos
如何使用(<ang>:<rad>)
Ti 的语法钾Z:
\documentclass[tikz,border=3.14]{standalone}
\begin{document}
\begin{tikzpicture}
\newcommand\ir{2}%Inner radius
\newcommand\nb{5}%Number of bars
\foreach \i in {1,...,\nb}
{
\draw (0,0) -- ({360*\i/\nb}:\ir);
}
\end{tikzpicture}
\end{document}
添加小“T”部件,无需任何其他手动计算:
\documentclass[tikz,border=3.14]{standalone}
\begin{document}
\begin{tikzpicture}
\newcommand\ir{2}%Inner radius
\newcommand\nb{5}%Number of bars
\foreach \i in {1,...,\nb}
{
\pgfmathsetmacro\ang{360*\i/\nb}
% get the centre point of the line (0,0)--(\ang:\ir) as (tmp)
\draw (0,0) -- coordinate(tmp) (\ang:\ir)
% from that centre, draw perpendicular for 0.25 (+(<coord>) syntax)
(tmp) -- +(\ang + 90:.25);
}
\end{tikzpicture}
\end{document}
答案2
您可以使用\pgfmathsetmacro
来定义变量:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\pgfmathsetmacro{\ir}{2}
\pgfmathsetmacro{\nb}{5}
\pgfmathsetmacro{\tta}{2*pi/\nb}
\foreach \i in {1,...,\nb} {
\pgfmathsetmacro{\ctta}{cos(deg(\i*\tta))}
\pgfmathsetmacro{\stta}{sin(deg(\i*\tta))}
\pgfmathsetmacro{\ltpcx}{\ir*\ctta}
\pgfmathsetmacro{\ltpcy}{\ir*\stta}
\draw (0,0) -- (\ltpcx,\ltpcy);
}
\end{tikzpicture}
\end{document}
编辑供您参考,有几个问题和答案可以很好地解释pgfmathsetmacro
和newcommand
用作变量之间的区别tikz
:
TikZ 中使用 \newcommand 和 \pgfmathsetmacro 的区别 \coordinate
但它们与您的问题没有直接关系。
答案3
pstricks
带有和 的简短代码multido
:
\documentclass{article}
\usepackage[svgnames]{xcolor}%
\usepackage{pst-eucl, multido}
\begin{document}
\psset{unit=1.5cm, linewidth=1pt, linecolor=SteelBlue, tbarsize=1}
\begin{pspicture}(-3,-3)(3,3)
\multido{\I = 0+72}{5}{\psline{-|}(0,0)(3;\I)}
\end{pspicture}
\end{document}