Asymptote: Drawing: Difference between revisions
Silmarilmath (talk | contribs) |
m →Dots |
||
| (26 intermediate revisions by 16 users not shown) | |||
| Line 1: | Line 1: | ||
{{asymptote}} | {{asymptote}} | ||
== 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> | |||
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: | |||
<tt>filldraw(circle((0, 0), 0.02), white, black);</tt> | |||
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 insanity: | |||
<tt>dot((0,0),filltype=FillDraw(fillpen=white, drawpen=black));</tt> | |||
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, | |||
<tt>draw(circle((0,0),5));</tt> | |||
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> | <asy> | ||
draw(circle((0,0),5)); | |||
</asy> | </asy> | ||
Once again, we can fix certain attributes to this code: | |||
<tt> | <tt>draw(circle((0,0),5),red+linewidth(1));</tt> | ||
</tt> | |||
<asy> | <asy> | ||
draw(circle((0,0),5),red+linewidth(1)); | |||
</asy> | </asy> | ||
And we can fill the inside: | |||
<tt> | <tt>filldraw(circle((0,0),5),green,red+linewidth(1));</tt> | ||
<asy> | <asy> | ||
filldraw(circle((0,0),5),green,red+linewidth(1)); | |||
</asy> | </asy> | ||
== Ellipse == | |||
<tt>draw((0,0) | Another rounded figure we can create is the ellipse. | ||
<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 semi-major axis and the 3 is the length of the semi-minor axis. This results in: | |||
<asy> | <asy> | ||
draw((0,0) | draw(ellipse((0,0),5,3)); | ||
</asy> | </asy> | ||
Once again, we can fix attributes and fill the inside. | |||
<tt> | <tt>filldraw(ellipse((0,0),5,3),green,red+linewidth(1));</tt> | ||
<asy> | <asy> | ||
filldraw(ellipse((0,0),5,3),green,red+linewidth(1)); | |||
</asy> | </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> | <asy> | ||
draw( | draw(unitsquare); | ||
</asy> | </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> | |||
Latest revision as of 15:51, 21 September 2025
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);
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:
Or you could do this insanity:
dot((0,0),filltype=FillDraw(fillpen=white, drawpen=black));
For example:
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 semi-major axis and the 3 is the length of the semi-minor axis. This results in:
Once again, we can fix attributes and fill the inside.
filldraw(ellipse((0,0),5,3),green,red+linewidth(1));
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
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