# 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` 