# 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