Difference between revisions of "Asymptote: Logical Operators and Loops"
Line 26: | Line 26: | ||
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 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:
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].