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