Difference between revisions of "Asymptote: Logical Operators and Loops"

 
Line 2: Line 2:
  
 
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:
 
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
+
[[Image:Smileys.gif]]
\includegraphics[height=5cm]{Smileys.pdf}
 
\end{figure}
 
  
 
This particular example was produced with the following code:
 
This particular example was produced with the following code:
Line 27: Line 25:
 
  }
 
  }
  
Above, we created a picture called <tt>smiley</tt> and added it to <tt>currentpicture</tt> many times using a <tt>for</tt> loop, as the indices <math>i</math> and <math>j</math> each ranged from <math>0</math> to <math>4</math>.  Basically, the arguments in the parentheses for the first <tt>for</tt> loop first declare <math>i</math> to be an integer and assign to i the value <math>0</math>.  Then, if <math>i<5</math>, it executes what is inside the <tt>{}</tt>  brackets and when it is finished, it adds <math>1</math> to <math>i</math> (<tt>++i</tt>).  This process repeats until the boolean statement <math>i<5</math> has the value false, i.e. 5 times (hence the 5 columns of smileys).  The <tt>if</tt> statement is self-explanatory; if <math>\lfloor((i-j)/2)\rfloor=((i-j)/2)</math> (which checks if <math>i</math> and <math>j</math> have the same parity or not), then the smiley is added, and if not it skips the brackets that follow.
+
Above, we created a picture called <tt>smiley</tt> and added it to <tt>currentpicture</tt> many times using a <tt>for</tt> loop, as the indices <math>i</math> and <math>j</math> each ranged from <math>0</math> to <math>4</math>.  Basically, the arguments in the parentheses for the first <tt>for</tt> loop first declare <math>i</math> to be an integer and assign to i the value <math>0</math>.  Then, if <math>i<5</math>, it executes what is inside the <tt>{}</tt>  brackets and when it is finished, it adds <math>1</math> to <math>i</math> (<tt>++i</tt>).  This process repeats until the boolean statement <math>i<5</math> has the value false, i.e. 5 times (hence the 5 columns of smileys).  The <tt>if</tt> statement is self-explanatory; if <math>\lfloor(i-j)/2\rfloor=(i-j)/2</math> (which checks if <math>i</math> and <math>j</math> 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 [[http://www.cplusplus.com/doc/tutorial/control.html here]].
 
For more information on logical operators and loops, see [[http://www.cplusplus.com/doc/tutorial/control.html here]].

Revision as of 09:39, 23 January 2007

Asymptote (Vector Graphics Language)
Getting Started - Basics - Drawing - Labeling - Filling - Useful functions - Examples - Macros and Packages

Help - Reference - Advanced Asymptote - 3D Graphics - CSE5 Package - How to

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:

Smileys.gif

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 $i$ and $j$ each ranged from $0$ to $4$. Basically, the arguments in the parentheses for the first for loop first declare $i$ to be an integer and assign to i the value $0$. Then, if $i<5$, it executes what is inside the {} brackets and when it is finished, it adds $1$ to $i$ (++i). This process repeats until the boolean statement $i<5$ has the value false, i.e. 5 times (hence the 5 columns of smileys). The if statement is self-explanatory; if $\lfloor(i-j)/2\rfloor=(i-j)/2$ (which checks if $i$ and $j$ 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].