# Ellipses

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