Chapter 6. Curves in Polar Coordinates
Rovenski Vladimir, Haifa
> restart:
6.1 Basic Plots in Polar Coordinates
The graph of = f(t) in polar coordinates. By assumption t=-Pi..Pi .
> plots[polarplot](1, t=0..Pi, scaling=constrained); # upper half-circle
> plots[polarplot](t, t=0..4*Pi, scaling=constrained); # two coils of Archimedes' spiral
>
Example 1 .
1. The polygon through some points of Archimedes' spiral.
> t:=i -> i*Pi/6: p1:=plot([seq([t(i), t(i)], i=0..40)], coords=polar, style=point, symbol=circle):
> p2:=plot([seq([t(i), t(i)], i=0..40)], coords=polar):
> plots[display]([p1, p2], scaling=constrained);
2. A regular star (m,n)-gon (convex for m=1) with relatively prime m and n.
> n:=5: m:=2: plot([seq([1, m*i*2*Pi/n], i=0..n)], coords=polar, scaling=constrained, axes=none);
The disconnected star (m,n)-gon .
> n:=8: m:=2: t:=i -> i*2*Pi/n: plot([seq([[1,t(i)], [1,t(i+m)]], i=1..n)], coords=polar, scaling=constrained,axes=framed);
>
3. The circular diagram.
> with(plots): A:=[0, 10, 30, 40, 20]: # enter A[2],A[3]... in
Warning, existing definition for changecoords has been overwritten
> B:=i->sum((A[j]/100)*2*Pi, j=2..i): P:=polarplot([1, seq([[0,0], [1,B(i)]], i=1..nops(A)-1)], scaling=constrained): T:=textplot({seq([.5, B(i),"A"[i]], i=2..nops(A))}, coords=polar,axes=none): display([P, T]);
>
Another method
> P:=seq(display(plottools[pieslice]([0,0], 5, Pi*i/10..Pi*(i+1)/10, color=COLOR(HUE, evalf(i/20))), scaling=constrained), i=0..20): display({P}, axes=none);
4. Stopwatch (with moving arrow).
> n:=60: # 60 seconds in a minute
> q:=k -> polarplot([[0,0], [0.9,-k*2*Pi/n]], thickness=3):
> p:=polarplot([1,.1], color=blue):
> text:=textplot([seq([sin(Pi*i/6), cos(Pi*i/6), "i"], i=1..12), [-.1,-.3, "Cosmos"]], font=[TIMES, BOLD, 18]):
> display([seq(display([p, text, q(k)]), k=1..n)], insequence=true, axes=none, scaling=constrained);
A more natural arrow for the stopwatch.
> q:=k -> plottools[arrow]([0, 0], [0.8*sin(k*2*Pi/n), 0.8*cos(k*2*Pi/n)], .05, .15, .2, color=green): display([seq(display([p, text, q(k)]), k=1..n)], insequence=true, axes=none, scaling=constrained);
5. The butterfly and the cochleoid.
> f:=exp(1)^cos(t)-2*cos(4*t)+sin(t/12)^5;
> plot(f, t=-12*Pi..12*Pi, numpoints=999, coords=polar);
> plot(sin(t)/t, t=-6*Pi..6*Pi, coords=polar, scaling=constrained); # cochleoid
>
7. Conic sections, where p1 are ellipses, p2 are parabolas, p3 are hyperbolas.
> p:=1: f:=e->p/(1-e*cos(t)):
> p1:=plot([seq(f(i/15), i=9..14)], t=-Pi..Pi, coords=polar):
> v:=1.2: p2:=plot(f(1), t=Pi/2-v..3*Pi/2+v, coords=polar):
> v:=0.5: p3:=plot([seq(f(1+i/5), i=1..3)], t=Pi/2-v..3*Pi/2+v, coords=polar):
> plots[display]([p1, p2, p3]); # all types of conic sections
8. The sunflower = 3+|cos(n )|.
> n:=7: f:=3+abs(cos(n*t)):
> plot([f,3], t=0..2*Pi, coords=polar, color=[gold, black], scaling=constrained);
9. The loop coupling = 2 cos(2 )+1
> plot(2*cos(2*t)+1, t=0..2*Pi, coords=polar, scaling=constrained);
10. The Pascal's limacon = 2a cos( )-b (a, b>0)
(with a loop for b<2a, without a loop for b>2a, and the cardioid for b=2a).
> a:=1: f:=b->2*a*cos(t)+b: plot([f(3*a), f(2*a), f(a)], t=0..2*Pi, coords=polar, color=[red,blue,black], scaling=constrained);
Plot a generalization = 2a cos(n )-b (a, b>0) of the cardioid and limacon for n=3, a=0.5 and b=2.
11. The leaf of a Japanese maple ( Acer palmatum )
> R:=(1+sin(t))*(1+.3*cos(8*t))*(1+.1*cos(24*t));
> plot([R,t,t=0..2*Pi], coords=polar);
Plot another leaf:
> g:=100/(100+(t-Pi/2)^8): # For scaling
> R:=g*(2-sin(7*t)-cos(30*t)/2):
> plot([R, t, t=-Pi/2..3/2*Pi], coords=polar, numpoints=999);
Remark 2 . Plot domains in the plane with nets of curvilinear coordinates:
polar, parabolic, elliptic, bipolar, hyperbolic, etc.
> coordplot(polar, title=`Polar`, scaling=constrained);
by replacing polar with the name of the corresponding coordinates parabolic, elliptic, bipolar, hyperbolic .
b) Conformal transformations (defined by complex functions).
> conformal(1/z, z=-1-I..1+I, grid=[25,25], numxy=[100,100], axes=framed, scaling=constrained, view=[-6..6,-6..6]);
>
6.2 Remarkable Curves in Polar Coordinates
1. The cissoid
> f:=2*sin(t)^2/cos(t): h:=2/cos(t): plot([f, h], t=-Pi/2+.2..Pi/2-.2, coords=polar, linestyle=[1, 2]);
2. The strophoid (a twisted strip)
> f:=(1+sin(t))/cos(t): h:=2/cos(t):
> T:=[-Pi/2..Pi/2-.5, Pi/2+.5..3*Pi/2]:
> p:=i->plot(f, t=T[i], coords=polar, thickness=2):
> q:=plot(h, t=-Pi/2+.5..Pi/2-.5, coords=polar, linestyle=2):
> plots[display]([p(1), p(2), q], tickmarks=[2,3]);
3. The conchoid (shell-shaped).
For l>a the conchoid has a loop; for 0<l<a it has a cuspidal point of the first kind.
> a:=5: l:=4*a: f1:=a/sin(t)+l: f2:=a/sin(t)-l: h:=a/sin(t):
> plot([f1, f2, h], t=.15..Pi-.15, coords=polar, thickness=[2,2,1], linestyle=[1,1,2]);
4. Kappa
> a:=1: e:=.4: f1:=a*cot(t): f3:=a/sin(t):
> plot([f1, -f1, f3, -f3], t=e..Pi-e,coords=polar, linestyle=[1,1,2,2]);
The windmill
> a:=1: e:=0.2: # windmill
> f1:=a*cot(2*t): f3:=(a/2)/sin(t): f4:=(a/2)/cos(t):
> p1:=plot([f1, -f1], t=e..Pi/2-e, coords=polar): p2:=plot([f1, -f1], t=-Pi/2+e..-e, coords=polar): p3:=plot([f3,-f3], t=e..Pi-e, coords=polar, linestyle=2): p4:=plot([f4, -f4], t=-Pi/2+e..Pi/2-e, coords=polar, linestyle=2): plots[display]([p1, p2, p3, p4]);
5. The ovals of Cassini
> f1 := a -> 3*sqrt(abs(cos(2*t)+sqrt(cos(2*t)^2-cos(2*a)^2))):
> f2 := a -> 3*sqrt(abs(cos(2*t)-sqrt(cos(2*t)^2-cos(2*a)^2))):
> f3 := b -> 3*sqrt(cos(2*t)+sqrt((cos(2*t)^2+b))):
> p[0]:=plot(3, coords=polar, linestyle=2):
> n:=24: for i from 1 to 6 do ti:=i*Pi/n: p[i]:=plot([f1(ti), f2(ti), -f1(ti), -f2(ti)], t=-ti..ti, coords=polar): p[i+6]:=plot(f3(i), t=-Pi..Pi, coords=polar) od:
> plots[display]([seq(p[i], i=0..12)], scaling=constrained);
For a= c ( p[6] in the above program) we obtain the {lemniscate of Bernoulli} = c
> c:=1: f1:=c*sqrt(2*abs(cos(2*t))):
> plot([f1,-f1], t=-Pi/4..Pi/4, coords=polar, scaling=constrained);
>
6.3 Inversion of Curves
Example 1 .
1. The inversion of three-leafed rose = R cos(3 ) (see Section 6.5.1) is the trisectrix of Longchamps .
> a:=1: e:=.1: f:=a/cos(3*t): p:=i -> plot(f, t=(2*i-1)*Pi/6+e..(2*i+1)*Pi/6-e, coords=polar):
> q:=i -> plot([t, i*Pi/3-Pi/6, t=-3..3], coords=polar, linestyle=2): h:=plot(1, coords=polar, linestyle=2):
> plots[display]([seq(p(i),i=0..2), seq(q(i), i=0..2), h],scaling=constrained);
2. The similar equation = R/{cos( /3)} defines the trisectrix of Maclaurin.
> p1:=plot(1/cos(t/3), t=-3*Pi/2+e..3*Pi/2-e, coords=polar):
> p2:=plot([cos(t/3),1], t=-3*Pi/2..3*Pi/2, coords=polar, linestyle=[1,2]):
> p3:=plot(-3/cos(t), t=-Pi/2+e..Pi/2-e, coords=polar, linestyle=2): e:=.7: plots[display]([p1, p2, p3]);
3. Inversion of the four-leafed rose = R cos(4 ) leads to the cross-shaped curve = R/{cos(4 )}
> a:=1: f:=a/sin(2*t):
> p:=i-> plot(f, t=(2*i-1)*Pi/4+Pi/4+e..(2*i+1)*Pi/4+Pi/4-e, coords=polar): h:=plot(1, coords=polar, linestyle=2,scaling=constrained): e:=.15: plots[display]([seq(p(i), i=0..3), h]);
>
6.4 Spirals
1. The neoid = a +l (the conchoid of Archimedes' spiral)
> plot(0.2*t+0.5, t=0..6*Pi, coords=polar, scaling=constrained);
2. Galileo's spiral = a ^2-l and the inverse Galileo's spiral for l=0: = a/ ^2.
> plot(0.01*t^2-0.02, t=0..6*Pi, coords=polar, scaling=constrained);
> plot(100/t^2, t=6..10*Pi, coords=polar, scaling=constrained);
3. Fermat's spiral = a
> plot(sqrt(t), t=0..4*Pi, coords=polar, scaling=constrained);
Its conchoid is the parabolic spiral = a +l, l>0
> plot([sqrt(t)+.5, -sqrt(t)+.5], t=0..4*Pi, coords=polar, scaling=constrained);
4. The logarithmic spiral = a ( in R), first studied by Descartes, is the curve for which the angle between
the polar radius and a tangent line at its endpoint is constant.
In view of this property a curve is intensively used in applications.
In nature some shells have the shape of a logarithmic spiral.
> plot(1.1^t, t=-6*Pi..4*Pi, coords=polar, scaling=constrained);
5. The hyperbolic spiral = a/ was studied by P. Varignon in 1704. The pole plays the role of an asymptotic
(limit) point. The asymptote is the straight line parallel to the polar axis at the distance a from it.
(Its conchoid is plotted analogously.
> p1:=plot(2/t, t=.5..6*Pi, coords=polar):
> p2:=plot(2/sin(t), t=.4..1.5, coords=polar, linestyle=2):
> plots[display]([p1, p2], scaling=constrained);
6. The lituus = a/ , the polar axis is its asymptote.
> plot(2/sqrt(t), t=0.1..6*Pi, coords=polar, scaling=constrained);
>
6.5 Roses and Crosses
6.5.1 Roses
Plot the roses:
> p:=array(1..3, 1..10):
> for a from 1 to 10 do for c from 1 to 3 do b:=2*c-1: p[c,a]:=plots[polarplot]([sin(a/b*t), 1], t=0..2*b*Pi, thickness=[2,1], linestyle=[1,2], title=convert(k=a/b, string)) od od:
> plots[display](p, axes=none, scaling=constrained);
>
6.5.2 Crosses
1. Leaf cross .
> f:=max(2*cos(2*t)^2, 0.3): plot([f, 0.25, 2.05], t=0..2*Pi, coords=polar, thickness=2, scaling=constrained);
2. St. Andrew's cross .
> f:=min(1/(2*abs(cos(2*t))), 2): plot([f, 2.05], t=0..2*Pi, coords=polar, thickness=[2, 1], linestyle=[1, 2], scaling=constrained);
3. Catacomb cross .
> f:=min(2/(3*abs(sin(2*t))),2): plot([f,2.07],t=-.1..2*Pi, coords=polar, thickness=[2, 1], linestyle=[1, 2], scaling=constrained);
4. St. George's cross , two examples.
> f:=min((9/(10*abs(sin(2*t))))^5, 2): plot([f,2.05], t=-.1..2*Pi, coords=polar, thickness=[2,1], linestyle=[1,2], scaling=constrained);
> g:=min(4/((2*sin(2*t)))^4,2): plot([g,2.05], t=-.1..2*Pi, coords=polar, thickness=[2, 1], linestyle=[1, 2], scaling=constrained);
5. On-Bread cross .
> f:=min(1/(10*abs(sin(2*t))), 1): plot([f, 1.02, 1.2], t=-.01..2*Pi, coords=polar, thickness=[2,1,1], scaling=constrained);
6. St. George's cross (sharp) . Explain the program below.
> f1:=4/(2*sin(2*t))^4:
> sol:=solve(f1=2, t): t0:=sol[1]; f2:=t->a*t^2-a*t0^2+2:
> plot([1/f1, 1/2], t=-t0..2*Pi-t0, scaling=constrained);
> a:=2: f:=piecewise(t<t0, f2(t), t<Pi/2-t0, f1, t<Pi/2+t0, f2(t-Pi/2), t<Pi-t0, f1, t<Pi+t0, f2(t-Pi), t<3*Pi/2-t0,f1, t<3*Pi/2+t0, f2(t-3*Pi/2),f1):
> plot([f, 2.02], t=-t0..2*Pi-t0, coords=polar, thickness=[2,1], linestyle=[1,2], scaling=constrained);
>