# Circles

You can draw a circle with the command `C(r)`. This will draw a circle of radius `r` centered on the current position. The current position and direction are not changed so you can easily draw concentric circles as shown in program `(circ1.nll)`.

#### Program: (circ1.nll)

```n = 10;
r = 1;
dr = 0.1;
T1 : C(r) A(r,r+dr);
START : P(2,2) S(T1,n);
```

#### Command line

`nell circ1.nll START 3 | nellsvg 4 4 in 0.02 1 > circ1.svg` You can create a Moire pattern with two sets of equally spaced concentric circles. As you move apart the centers of the two sets of circles you will see different patterns emerge. These patterns are analogous the constructive and destructive interference produced by two point sources of light (or any source of transverse waves). Program `(circ2.nll)` draws two sets of 40 concentric circles spaced a distance `dr=0.05` apart with the centers of the two sets separated by a distance `4*dr=0.2`.

#### Program: (circ2.nll)

```n = 40;
r = 0.05;
dr = 0.05;
T1 : C(r) A(r,r+dr);
START : P(2.05,2.05) S(T1,n) A(r,dr) M(4*dr) S(T1,n)
```

#### Command line

`nell circ2.nll START 3 | nellsvg 4.3 4.1 in 0.02 1 > circ2.svg` The program `(circ3.nll)` will draw a circle of radius `r0` that is completely encircled by `n` circles. The radius of the outer circles shrinks as `n` increases as long as the radius of the inner circle stays constant. The square canvas size is `2*r0*(1+2*cos(b)/(1-cos(b)))` where `b=pi*(n-2)/(2*n)`.

#### Program: (circ3.nll)

```r0 = 1;
n = 12;
b = pi*(n-2)/(2*n);
x = r0/(1-cos(b)); distance from center of inner circle
r = x*cos(b); radius of outer circles
a = 2*pi/n;
T1 : [M(x) C(r)] T(a);
START : P(r0+2*r,r0+2*r) C(r0) T(-pi/2) S(T1,n);
```

#### Command line

`nell circ3.nll START 10 | nellsvg 3.4 3.4 in 0.02 1 > circ3.svg` The program `(circ4.nll)` will inscribe a circle inside an n-sided regular polygon. A program for circumscribing a circle around an n-sided regular polygon would be almost identical. See if you can modify `(circ4.nll)` to circumscribe a circle. Hint the radius of the circumscribed circle is `r=l/(2*cos(b))`.

#### Program: (circ4.nll)

```n = 5;
l = 1;
b = pi*(n-2)/(2*n);
r = l*tan(b)/2; radius of circle
a = 2*pi/n;
T1 : L(l) T(a);
START : M(0.5) <S(T1,n-1) Z()> T(b) M(l/(2*cos(b))) C(r);
```

#### Command line

`nell circ4.nll START 10 | nellsvg 2 1.6 in 0.02 1 > circ4.svg` 