Asymptote: Drawing
Contents
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: pair C=(0,0); int a=24; pair A=C+(0, a); pair B=A+(10,0); pair E=C-(0,a); pair D = E -(18,0);
draw(C--A--B--C--D--E--C);
draw(rightanglemark(C, A, B, 60)); draw(rightanglemark(C,E,D, 60));
label("", C, W); label("", A, NW); label("", B, NE); label("", E, SE); label("", D, SW);
int f=1; pair F=(A+C)/2; pair G=F-(f,0); pair H=F+(f,0); pair I=(C+E)/2; pair J=I-(f,0); pair K=I+(f,0); draw(G--H); draw(J--K);
label("", (D+E)/2, S); label("", (A+B)/2, N); label("", (B+C)/2, SSE); label("", (D+C)/2, NNW); You can fix certain attributes to this dot, such as color:
dot((0,0),blue);
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:
Once again, we can fix certain attributes to this code:
draw(circle((0,0),5),red+linewidth(1));
And we can fill the inside:
filldraw(circle((0,0),5),green,red+linewidth(1));
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 major axis and the 3 is the length of the minor axis. This results in:
Once again, we can fix attributes and fill the inside.
Unit- Paths
There are several useful pre defined 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
And the unitsphere command.(Note: you have to import the three module for this to work.)
import three; draw(unitsphere,pink); yields
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