You can draw an ellipse with the command E(rx,ry) where rx is the radius of the ellipse in the current direction and ry is the radius perpendicular to the current direction. The program (ellip1.nll) shows two ways to draw two ellipses of the same kind oriented perpendicular to each other. With the E1 command string a turn of pi/2 is made to draw the second ellipse. With the E2 command string the rx and ry values are swapped for the second ellipse which has the same effect.

Program: (ellip1.nll)

rx = 2;
ry = 1;
E1 : P(2,2) E(rx,ry) T(pi/2) E(rx,ry);
E2 : P(2,2) E(rx,ry) E(ry,rx);

Command line

nell ellip1.nll E1 3 | nellsvg 4 4 in 0.02 1 > ellip1.svg
nell ellip1.nll E2 3 | nellsvg 4 4 in 0.02 1 > ellip1.svg

You can also create Moire patterns with sets of equally spaced concentric ellipses. The patterns are similar to those created with circles but there are differences. The program (ellip2.nll) will draw two sets of 40 concentric ellipses spaced a small horizontal distance apart.

Program: (ellip2.nll)

n = 40;
rx = 0.05;
ry = 0.025;
drx = rx;
dry = ry;
T1 : E(rx,ry) A(rx,rx+drx) A(ry,ry+dry);
START : P(2.05,2.05) S(T1,n) A(rx,drx) A(ry,dry) M(4*drx) S(T1,n)

Command line

nell ellip2.nll START 3 | nellsvg 4.3 2.1 in 0.02 1 > ellip2.svg

A circle can be defined as all points whose distance from a point, called the center of the circle, is a constant value. Likewise an ellipse can be defined as all points whose distances from two points, called the foci of the ellipse, have a constant sum. The two foci are located on the long axis of the ellipse. If rx>ry then the foci are located a distance c=sqrt(rx^2-ry^2) from the center of the ellipse. The following program will draw n ellipses rotated about a common focus with a circle surrounding them all (ellip3.nll).

Program: (ellip3.nll)

n = 48;
a = 2*pi/n;
rx = 1.5;
ry = 3/4;
c = sqrt(rx^2-ry^2);
E1 : [M(c) E(rx,ry)] T(a);
START : P(rx+c+0.04,rx+c+0.04) S(E1,n) C(rx+c);

Command line

nell ellip3.nll START 3 | nellsvg 5.7 5.7 in 0.02 1 > ellip3.svg