我试图在网格r^3 = a^3\cdot \varphi
上绘制一个平滑的三级螺旋(),如果我设置但需要完全填充网格区域,$60\times 60$mm
则会收到“尺寸太大”错误:$a > 320$
\begin{tikzpicture}[x=1mm, y=1mm]
\draw[step=1, line width=0.1mm, opacity=0.3] (-30, -30) grid (30, 30);
\draw [domain=0:50, variable=\t, samples=1000]
plot ({\t r}:{pow(320*\t, 1/3)});
\end{tikzpicture}
有什么方法可以避免这个错误吗?
答案1
不同的数学库会有所帮助。例如,库fixedpointarithmetic
使用包fp
来进行具有更大数字范围的定点计算。
\documentclass{article}
\usepackage{tikz}
\usepackage{fp}
\usetikzlibrary{fixedpointarithmetic}
\begin{document}
\begin{tikzpicture}[x=1mm, y=1mm]
\draw[step=1, line width=0.1mm, opacity=0.3] (-30, -30) grid (30, 30);
\draw [domain=0:50, variable=\t, samples=1000]
plot[fixed point arithmetic] ({\t r}:{pow(600*\t, 1/3)});
\end{tikzpicture}
\end{document}
答案2
我会使用 pgfplots 来提高数学精度,并为其他问题提供更多的灵活性
我特意画了一些奇怪的网格和轴线,以显示一些与您所拥有的不同的选项。并且您可以将值更改为更大的范围。
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[grid=both,xmax=100,ymax=100,xmin=-100,ymin=-100,
axis equal,
xtick={-100,-80,...,100},
ytick={-100,-80,...,100},
minor x tick num=4,
xticklabels={},
yticklabels={}]
\addplot+[no marks,data cs=polar,domain=0:100, samples=1000]
({deg(x)},{(320*deg(x))^(1/3)});
\end{axis}
\end{tikzpicture}
\end{document}
答案3
从数学上来说,pow(600*\t,1/3)
等同于pow(600,1/3)*pow(\t,1/3)
...
仅 TikZ 及其默认数学引擎:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[x=1mm, y=1mm]
\draw[step=1, line width=0.1mm, opacity=0.3] (-30, -30) grid (30, 30);
\draw [domain=0:50, variable=\t, samples=1000]
plot ({\t r}:{pow(600,1/3)*pow(\t,1/3)});
\end{tikzpicture}
\end{document}