Difference between revisions of "Asymptote: Drawing"

(Lines)
m (Undo revision 246272 by Ferociouspuma66 (talk))
(Tag: Undo)
 
(19 intermediate revisions by 10 users not shown)
Line 1: Line 1:
 
{{asymptote}}
 
{{asymptote}}
  
==Dots==
+
== Dots ==
  
 
Let us start off with the most basic of this basic command: drawing a dot.
 
Let us start off with the most basic of this basic command: drawing a dot.
Line 7: Line 7:
 
To draw a dot, simply write the following code:
 
To draw a dot, simply write the following code:
  
<tt>
+
<tt>dot((0,0));</tt>
dot((0,0));
+
 
</tt>
+
You can fix certain attributes to this dot, such as color:
 +
 
 +
<tt>dot((0,0),blue);</tt>
  
 
<asy>
 
<asy>
dot((0,0));
+
dot((0,0),blue);
 
</asy>
 
</asy>
  
You can fix certain attributes to this dot, such as color:
+
To make the dot an open dot, you could draw a really small circle with a white fill and black outline:
 +
 
 +
<tt>filldraw(circle((0, 0), 0.02), white, black);</tt>
  
<tt>
+
For example:
dot((0,0),green);
 
</tt>
 
  
 
<asy>
 
<asy>
dot((0,0),green);
+
draw((0, 0) -- (0, 1), EndArrow(10));
 +
label("$(0, 1)$", (0, 1), NW);
 +
draw((0, 0) -- (1, 0), EndArrow(10));
 +
label("$(1, 0)$", (1, 0), SE);
 +
draw((0, 0) --(1, 1), blue);
 +
label("$x = y$", (0, 0) -- (1, 1), SE, blue);
 +
filldraw(circle((0, 0), 0.02), white, black);
 
</asy>
 
</asy>
  
asy]
+
Or you could do this craziness:
void shademe(pair A) {
+
 
fill(A--(A+(1,0))--(A+(1,1))--(A+(0,1))--cycle,gray(0.8));
+
<tt>dot((0,0),filltype=FillDraw(fillpen=white, drawpen=black));</tt>
}
 
size(90);
 
shademe((0,1));
 
shademe((1,0));
 
for(int i=0;i<=2;i+=1){
 
draw((i,0)--(i,2));
 
draw((0,i)--(2,i));
 
}
 
label("<math>60\%</math>",(0,1.5),W);
 
label("<math>25\%</math>", (0,0.5), W);
 
label("<math>33\frac{1}{3}\%</math>", (0.5,2),N);
 
label("<math>50\%</math>", (1.5,2),N);
 
[/asy]
 
  
==Circles==
+
For example:
 +
 
 +
<asy>
 +
draw((0,1)..(0,0)..(1,0), Arrows(10));
 +
dot((0,0),filltype=FillDraw(fillpen=white, drawpen=black));
 +
</asy>
 +
 
 +
== Circles ==
  
 
In this article,  
 
In this article,  
 
<tt>draw(circle((0,0),5));</tt>
 
<tt>draw(circle((0,0),5));</tt>
  
We see that the first '''draw()''' command creates the circle, which uses the '''circle()''' command. Within the circle command, we see the center point is located at the cartesian plane point (0,0), and it has a radius of 5.
+
We see that the first '''draw()''' command creates the circle, which uses the '''circle()''' command. How this works is that the circle() command produces a path in which the draw() command draws. Within the circle command, we see the center point is located at the cartesian plane point (0,0), and it has a radius of 5.
  
 
This code produces:
 
This code produces:
Line 71: Line 73:
 
</asy>
 
</asy>
  
==Ellipse==
+
== Ellipse ==
  
 
Another rounded figure we can create is the ellipse.  
 
Another rounded figure we can create is the ellipse.  
Line 77: Line 79:
 
<tt>draw(ellipse((0,0),5,3));</tt>
 
<tt>draw(ellipse((0,0),5,3));</tt>
  
In this case, the (0,0) is the center of the ellipse, the 5 is the length of the major axis and the 3 is the length of the minor axis. This results in:
+
In this case, the (0,0) is the center of the ellipse, the 5 is the length of the semi-major axis and the 3 is the length of the semi-minor axis. This results in:
  
 
<asy>
 
<asy>
Line 84: Line 86:
  
 
Once again, we can fix attributes and fill the inside.
 
Once again, we can fix attributes and fill the inside.
 +
 +
<tt>filldraw(ellipse((0,0),5,3),green,red+linewidth(1));</tt>
  
 
<asy>
 
<asy>
 
filldraw(ellipse((0,0),5,3),green,red+linewidth(1));
 
filldraw(ellipse((0,0),5,3),green,red+linewidth(1));
 +
</asy>
 +
 +
== Unit-Paths ==
 +
 +
There are several useful predefined paths for drawing things like unit squares, unit circles, etc. Just use the unit- paths!
 +
 +
You can use the
 +
 +
<tt>unitsquare</tt>
 +
<tt>unitcircle</tt>
 +
 +
paths for 2D. A list of Unit- paths for 3D can be found in the "Definitions": section of [[Asymptote: 3D graphics]]
 +
 +
Here is the <tt>unitsquare</tt> command:
 +
 +
<tt>draw(unitsquare);</tt> yields
 +
<asy>
 +
draw(unitsquare);
 +
</asy>
 +
 +
And the <tt>unitsphere</tt> command.(Note: you have to import the three module for this to work.)
 +
 +
<tt>import three;
 +
draw(unitsphere,pink);</tt>
 +
yields
 +
<asy>import three;
 +
draw(unitsphere,pink);</asy>
 +
 +
Since the unit- variables are paths, you can assign pen, fill them, and define other paths as them:
 +
 +
 +
<tt>path u=unitcircle;</tt>
 +
<tt>pen p=red+dashed;</tt>
 +
<tt>draw(u,p);</tt>
 +
 +
yields
 +
 +
<asy>
 +
path u=unitcircle;
 +
pen p=red+dashed;
 +
draw(u,p);
 
</asy>
 
</asy>

Latest revision as of 18:21, 10 April 2025

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

Dots

Let us start off with the most basic of this basic command: drawing a dot.

To draw a dot, simply write the following code:

dot((0,0));

You can fix certain attributes to this dot, such as color:

dot((0,0),blue);

[asy] dot((0,0),blue); [/asy]

To make the dot an open dot, you could draw a really small circle with a white fill and black outline:

filldraw(circle((0, 0), 0.02), white, black);

For example:

[asy] draw((0, 0) -- (0, 1), EndArrow(10)); label("$(0, 1)$", (0, 1), NW); draw((0, 0) -- (1, 0), EndArrow(10)); label("$(1, 0)$", (1, 0), SE); draw((0, 0) --(1, 1), blue); label("$x = y$", (0, 0) -- (1, 1), SE, blue); filldraw(circle((0, 0), 0.02), white, black); [/asy]

Or you could do this craziness:

dot((0,0),filltype=FillDraw(fillpen=white, drawpen=black));

For example:

[asy] draw((0,1)..(0,0)..(1,0), Arrows(10)); dot((0,0),filltype=FillDraw(fillpen=white, drawpen=black)); [/asy]

Circles

In this article, draw(circle((0,0),5));

We see that the first draw() command creates the circle, which uses the circle() command. How this works is that the circle() command produces a path in which the draw() command draws. Within the circle command, we see the center point is located at the cartesian plane point (0,0), and it has a radius of 5.

This code produces:

[asy] draw(circle((0,0),5)); [/asy]

Once again, we can fix certain attributes to this code:

draw(circle((0,0),5),red+linewidth(1));

[asy] draw(circle((0,0),5),red+linewidth(1)); [/asy]

And we can fill the inside:

filldraw(circle((0,0),5),green,red+linewidth(1));

[asy] filldraw(circle((0,0),5),green,red+linewidth(1)); [/asy]

Ellipse

Another rounded figure we can create is the ellipse.

draw(ellipse((0,0),5,3));

In this case, the (0,0) is the center of the ellipse, the 5 is the length of the semi-major axis and the 3 is the length of the semi-minor axis. This results in:

[asy] draw(ellipse((0,0),5,3)); [/asy]

Once again, we can fix attributes and fill the inside.

filldraw(ellipse((0,0),5,3),green,red+linewidth(1));

[asy] filldraw(ellipse((0,0),5,3),green,red+linewidth(1)); [/asy]

Unit-Paths

There are several useful predefined paths for drawing things like unit squares, unit circles, etc. Just use the unit- paths!

You can use the

unitsquare 
unitcircle 

paths for 2D. A list of Unit- paths for 3D can be found in the "Definitions": section of Asymptote: 3D graphics

Here is the unitsquare command:

draw(unitsquare); yields [asy] draw(unitsquare); [/asy]

And the unitsphere command.(Note: you have to import the three module for this to work.)

import three; draw(unitsphere,pink); yields [asy]import three; draw(unitsphere,pink);[/asy]

Since the unit- variables are paths, you can assign pen, fill them, and define other paths as them:


path u=unitcircle;
pen p=red+dashed;
draw(u,p);

yields

[asy] path u=unitcircle; pen p=red+dashed; draw(u,p); [/asy]