Asymptote 手册第 47 页说明该rotate
命令“围绕 z 旋转角度”如下:
变换旋转(真实角度,对 z=(0,0));
我想利用此功能n
围绕假设的参考点排列圆圈,使得每个圆圈都是其相邻圆圈相对于该点的旋转版本theta
。结果在视觉上将类似于:
这是我尝试过的。
\documentclass{article}
\usepackage{asymptote}
\begin{document}
\begin{asy}
size(5cm);
path p = circle((0,3),1);
for(int i=0; i<=10; ++i)
{
draw(
p*rotate(
(i*pi/18),(0,0)
)
);
}
\end{asy}
\end{document}
但是,编译结果如下:*没有匹配的函数'运算符(路径,变换)'。
答案1
据我所知,改变顺序就足够了。(我希望你不介意我切换到ayspictureB
,你只需要用进行编译pdflatex -shell-escape
。)
\documentclass{article}
\usepackage{asypictureB}
\begin{document}
\begin{asypicture}{name=robo}
size(5cm);
path p = circle((0,3),1);
for(int i=0; i<=10; ++i)
{
draw(
rotate(
(i*pi/18),(0,0)
)*p
);
}
\end{asypicture}
\end{document}
为了得到与屏幕截图类似的效果,请提供单位。(它出现对我来说,否则单位将被视为 pt,而角度约定似乎与 Ti 一样不幸钾Z,尽管我认为情况并非如此。至少如果我使用度数,结果是一致的。)
\documentclass{article}
\usepackage{asypictureB}
\begin{document}
\begin{asypicture}{name=robo}
size(5cm);
path p = circle((0,3cm),1cm);
for(int i=0; i<=10; ++i)
{
draw(
rotate(
(i*10),(0,0)
)*p
);
}
\end{asypicture}
\end{document}
答案2
如果您直接使用 asy 运行此示例,则实际上不需要 asypictureB(或更现代的 asymptote.sty 包)甚至 LaTeX 命令。
指定 size(5cm); 的目的是让您不必指定单位。如果您以厘米为单位,则可以指定 unitize(1cm);。这是一个简化版本,以 10 度为单位旋转 9 个增量:
size(5cm);
path p=circle((0,3),1);
for(int i=0; i < 10; ++i)
draw(rotate((i*10),(0,0))*p);