Arcs
You can create both circular and elliptic arcs with the
R(rx,ry,a,da)
command. For a circular arc set
rx=ry
. The arc is centered at the current position and its
starting point is at angle a
from the current
direction. Positive angles are to the left of the current direction
(counterclockwise) and negative angles are to the right (clockwise).
The angle swept out by the arc from the starting to the ending point
is da
. The command R(1,1,-pi/2,pi)
will draw a half
circle of radius 1. The program (arc1.nll)
will draw a half
circle on each side of a square.
Program: (arc1.nll)
T1 : L(1) T(pi/2); T2 : [M(0.5) T(-pi/2) R(0.5,0.5,-pi/2,pi)] M(1) T(pi/2); START : P(0.5,0.5) <S(T1,3) Z()> S(T2,4);
Command line
nell arc1.nll START 10 | nellsvg 2 2 in 0.02 1 > arc1.svg
This can be generalized to drawing a half circle on each side of an
n-sided polygon. Program (arc2.nll)
shows how to do it but
without drawing the sides of the polygon.
Program: (arc2.nll)
n = 5; a = 2*pi/n; T1 : L(1) T(pi/2); T2 : [M(0.5) T(-pi/2) R(0.5,0.5,-pi/2,pi)] M(1) T(a); START : P(0.75,0.5) S(T2,n);
Command line
nell arc2.nll START 3 | nellsvg 2.5 2.3 in 0.02 1 > arc2.svg
The program (arc3.nll)
is basically the same as
(arc2.nll)
but it draws a half ellipse instead of a half
circle. The radius of the ellipse extending away from the center is
three times the radius along the edges.
Program: (arc3.nll)
n = 6; a = 2*pi/n; T1 : L(1) T(pi/2); T2 : [M(0.5) T(-pi/2) R(1.5,0.5,-pi/2,pi)] M(1) T(a); START : P(1.6,1.5) S(T2,n);
Command line
nell arc3.nll START 3 | nellsvg 4.2 4.8 in 0.02 1 > arc3.svg
The program (arc4.nll)
draws elliptic arcs at evenly spaced
angles around a common center.
Program: (arc4.nll)
n = 24; a = 2*pi/n; T1 : R(1.5,0.5,-0.38,pi/2) T(a); START : P(1.55,1.55) S(T1,n) C(0.73);
Command line
nell arc4.nll START 3 | nellsvg 3.1 3.1 in 0.02 1 > arc4.svg
The program (arc5.nll)
draws a crescent using circular arcs.
Program: (arc5.nll)
a = 5*pi/8; START : P(0.6,1.15) R(1,1,-pi/2,pi) M(0.4) R(1.1,1.1,-a,2*a);
Command line
nell arc5.nll START 3 | nellsvg 2.25 2.3 in 0.02 1 > arc5.svg