Asymptote: Logical Operators and Loops
Asymptote uses loops and logical operators that are almost identical to those in C++. Loops are absolutely essential if you want to make diagrams that look like this: \begin{figure}[h] \centering \includegraphics[height=5cm]{Smileys.pdf} \end{figure}
This particular example was produced with the following code:
include graph; real r=5; size(r*cm); picture smiley; filldraw(smiley,Circle((0,0),1),yellow,black); fill(smiley,Circle((-.3,.4),.1),black); fill(smiley,Circle((.3,.4),.1),black); draw(smiley,Arc((0,0),.5,-140,-40)); for (int i=0; i<5; ++i) { for (int j=0; j<5; ++j) { if (floor((i-j)/2)==((i-j)/2)) { add(scale(r/10*cm)*smiley,(i,j)); } } }
Above, we created a picture called smiley and added it to currentpicture many times using a for loop, as the indices and each ranged from to . Basically, the arguments in the parentheses for the first for loop first declare to be an integer and assign to i the value . Then, if , it executes what is inside the {} brackets and when it is finished, it adds to (++i). This process repeats until the boolean statement has the value false, i.e. 5 times (hence the 5 columns of smileys). The if statement is self-explanatory; if (which checks if and have the same parity or not), then the smiley is added, and if not it skips the brackets that follow. For more information on logical operators and loops, see [here].