Application Center - Maplesoft

App Preview:

Plotting of Polar Points

You can switch back to the summary page by clicking here.

Learn about Maple
Download Application


 

Image 

Plotting of Polar Points 

P.M. Velez
Professor Emeritus, Los Angeles City College
U.S.
velez.pmjr@verizon.net
 

Introduction
The worksheet is a subset of larger worksheet Graph and Analysis of Polar Functions.  It demonstrates to high school or junior college students taking a course in Trigonometry or PreCalculus on how to plot points points. It also introduces students to pertinent topics related to polar points such conversion from polar form to rectangular form, its nonuniqueness and conversion from degrees to radians.
 

How to Run: To start the Maplet, click the execute all button from the toolbar above. 

Initialization
A menu driven maplet PolarFunction initiates the worksheet.  There are four buttons namely, Section1, Section2,Section3, Section4, Exit.  Buttons Section2, Section3 and Section4 are disabled and Section1 and Exit button are enabled.  Section1 is a lesson on how to plot polar points.
 

> restart; with(Maplets[Elements]): with(plots):
 

Procedure Definitions 

Auxillay Procedures 

> MainTitle:="Junior College Math Series: Polar Points and  Functions":

fwh:=proc(fz,wd,ht)
 value=MathML[Export](""),fontsize=fz, width=wd, height=ht
end proc:


labattr:=proc(hh,ww,ht) halign=hh,width=ww,height=ht end proc:

pptFnc:=proc()
 
local PPRad, PPDeg, PPRadN, PPDegN,pf,ps,pe;  
 
uses Maplets:-Tools;    
 PPRad:=parse(Get('PPRad')); PPDeg:=parse(Get('PPDeg'));
 PPRadN,PPDegN:=map(convert,[PPRad,PPDeg],name)[];  
 pf:=[r, theta];
 ps:=[PPRadN, PPDegN*(Pi/180)];    
 
pe:=[PPRad,simplify(PPDeg*Pi/180)];
 Set(pptMLV=MathML[Export](<(R[Formula]=pf),
   (R[Substitution]=ps),(R[Evaluation]=pe)>));
end proc:


rptFnc:=proc()
 
local PPRad, PPDeg, PPRadN, PPDegN,pf,ps,pe;
 uses Maplets:-Tools;
 PPRad:=parse(Get('PPRad')); PPDeg:=parse(Get('PPDeg'));
 PPRadN,PPDegN:=map(convert,[PPRad,PPDeg],name)[];  
 pf:=[r*cos(theta), r*sin(theta)];
 ps:=[PPRadN*cos(PPDegN*(Pi/180)),PPRadN*sin(PPDegN*(Pi/180))];
 pe:=sprintf("[%a, %a]",evalf[3](PPRad*cos(PPDeg*(Pi/180))),
     evalf[3](PPRad*sin(PPDeg*(Pi/180))));
 Set(rptMLV=MathML[Export](<(R[Formula]=pf),
   (R[Substitution]=ps),(R[Evaluation]=pe)>));

end proc:

secFnc:=proc()
 
local PPRad, PPDeg, PPRadN, PPDegN,pf,ps,pe;
 uses Maplets:-Tools;
 PPRad:=parse(Get('PPRad')); PPDeg:=parse(Get('PPDeg'));
 PPRadN,PPDegN:=map(convert,[PPRad,PPDeg],name)[];  
 pf:=[-r, simplify(theta+Pi)];
 if PPRad >= 0 then
    ps:=[-PPRadN, PPDegN*(Pi/180)+Pi];   
    
pe:=[-PPRad,simplify(PPDeg*(Pi/180)+Pi)];
 else
    ps:=[PPRadN, PPDegN*(Pi/180)+Pi];   
    
pe:=[PPRad,simplify(PPDeg*(Pi/180)+Pi)];
 end if;

 Set(secMLV=MathML[Export](<(R2[Formula]=pf),
   (R2[Substitution]=ps),(R2[Evaluation]=pe)>));

end proc:

thdFnc:=proc()
local PPRad, PPDeg, PPRadN, PPDegN,pf,ps,pe;
 uses Maplets:-Tools;
 PPRad:=parse(Get('PPRad')); PPDeg:=parse(Get('PPDeg'));
 PPRadN,PPDegN:=map(convert,[PPRad,PPDeg],name)[];  
 pf:=[-r, simplify(theta-Pi)];
 if PPRad >= 0 then
    ps:=[-PPRadN, PPDegN*(Pi/180)-Pi];   
    
pe:=[-PPRad,simplify(PPDeg*(Pi/180)-Pi)];
 else
    ps:=[PPRadN, PPDegN*(Pi/180)-Pi];   
    
pe:=[PPRad,simplify(PPDeg*(Pi/180)-Pi)];
 end if;
 
 Set(thdMLV=MathML[Export](<(R3[Formula]=pf),
   (R3[Substitution]=ps),(R3[Evaluation]=pe)>));

end proc:

secdegFnc:=proc()
 
local PPRad, PPDeg, PPRadN, PPDegN,pf,ps,pe;
 uses Maplets:-Tools;
 PPRad:=parse(Get('PPRad')); PPDeg:=parse(Get('PPDeg'));
 PPRadN,PPDegN:=map(convert,[PPRad,PPDeg],name)[];
 pf:=[-r, simplify(theta+180)];
 if PPRad >= 0 then
    ps:=[-PPRadN, PPDegN+180];
pe:=[-PPRad,simplify(PPDeg+180)];
 else
    ps:=[PPRadN, PPDegN+180];
pe:=[PPRad,simplify(PPDeg+180)];
 end if;
  
 Set(secdegMLV=MathML[Export](<(R2[Formula]=pf),
   (R2[Substitution]=ps),(R2[Evaluation]=pe)>));

end proc:

thddegFnc:=proc()
local PPRad, PPDeg, PPRadN, PPDegN,pf,ps,pe;
 uses Maplets:-Tools;
 PPRad:=parse(Get('PPRad')); PPDeg:=parse(Get('PPDeg'));
 PPRadN,PPDegN:=map(convert,[PPRad,PPDeg],name)[];  
 pf:=[-r, theta-180];
 if PPRad >= 0 then
    ps:=[-PPRadN, PPDegN-180];
pe:=[-PPRad,simplify(PPDeg-180)];
 else
    ps:=[PPRadN, PPDegN+180];
pe:=[PPRad,simplify(PPDeg-180)];
 end if;

 Set(thddegMLV=MathML[Export](<(R3[Formula]=pf),
   (R3[Substitution]=ps),(R3[Evaluation]=pe)>));

end proc:

PoleDes:=proc()
 uses Maplets:-Tools, plots;    
 Set('ReqMLV2'=`Initial point P is referred to as the origin or pole. The point P has point notation P`*[r,theta]*`for any angle theta. It has the same location as P(0,0) in rectangular coordinate system.`);  
 display(PolarCoorSys(),
 pointplot([[0,0]],color=blue,symbol=solidcircle,symbolsize=20),
   textplot([0,0,"Pole"],font=[ARIAL,bold,14],align=below));   
end proc:

PoleAxisDes:=proc()
 local rad;
 uses Maplets:-Tools, plots;
 rad:=parse(Get('PPRad'));   
 Set('ReqMLV2'=`The polar axis lies on top of the x-axis.
Starting from the origin extended to the right of the origin.`);

 display(PolarCoorSys(),
   arrow(<25,0>,shape=arrow,thickness=3,color=blue),    
   textplot([rad/2,0,"Polar Axis"],font=[ARIAL,bold,14],align=below));  
end proc:

RadialLineDes:=proc()
 
local rad,theta;
 uses Maplets:-Tools, plots;
 rad:=parse(Get('PPRad')); theta:=(Pi/180)*parse(Get('PPDeg'));
 Set('ReqMLV2'=`Radial line is the directed distance r from the pole to point R. When r>0, r is measured in the positive direction of ray PR. When r<0, r is measured in the opposite direction of ray PR`);

 display(PolarCoorSys(),
   arrow(<rad*cos(theta),rad*sin(theta)>,shape=arrow,
     thickness=3,color=blue),
   
   textplot([rad*cos(theta)/2,rad*sin(theta)/2,"Radial Line"],
     font=[ARIAL,bold,14],align=right));   
end proc:

VerticalAxisDes:=proc()
 local rad;
 uses Maplets:-Tools, plots;
 rad:=parse(Get('PPRad'));
 Set('ReqMLV2'=`Vertical line`*[theta=Pi/2]*`lies on top of the y-axis extended above and below of the polar origin`);
 display(PolarCoorSys(),
   arrow(<0,25>,shape=arrow,thickness=3,color=blue),    
   textplot([0,rad/2,"Vertical Axis"],font=[ARIAL,bold,14],
     align=right));
end proc:

PolarPointDes:=proc()
 
local rad,theta;
 uses Maplets:-Tools, plots;    
 Set('ReqMLV2'=`Polar point `*[r,theta]*` also called Terminal point in the plane is determined by the distance PR denoted by [r] and the angle QPR denoted by`* [theta] *`. The point can be represented by many other points such as: `*[[-r,theta-Pi],[-r,theta+Pi],[r, theta+2*n*Pi]]*` where n is an integer`);
 rad:=parse(Get('PPRad')); theta:=(Pi/180)*parse(Get('PPDeg'));
 display(PolarCoorSys(),
   pointplot([[rad*cos(theta),rad*sin(theta)]],
     color=blue,symbol=solidcircle,symbolsize=20),     
   textplot([rad*cos(theta),rad*sin(theta),"Polar Point"],
     font=[ARIAL,bold,14],align=right));   
end proc:

VectorialAngleDes:=proc()
 
local rad,theta;
 uses Maplets:-Tools, plots;    
 Set('ReqMLV2'=`Vectorial Angle `*[theta]*` measures the angle from
the polar axis when `*[theta >=0]*` the angle is measuredin the counterclockwise direction when `*[theta<=0]*` the angle is measured in the clockwise direction. The angle is measured either in degrees or radians.`);
 rad:=parse(Get('PPRad')); theta:=(Pi/180)*parse(Get('PPDeg'));
 display(PolarCoorSys(),
   polarplot([rad*cos(t),rad*sin(t),t=0..theta],thickness=3,
     color=green),    
   pointplot([[0,0],[rad*cos(theta),rad*sin(theta)]],
     color=blue,symbol=solidcircle,symbolsize=20),   
   pointplot([[0,0],[rad*cos(theta),rad*sin(theta)]],
     color=blue,connect=true,thickness=3),
   pointplot([[0,0],[rad,0]],symbol=solidcircle,symbolsize=20,
     color=blue),
   pointplot([[0,0],[rad,0]],connect=true,thickness=3,
     color=blue),
   pointplot([[0,0],[abs(rad*cos(theta)),0]],connect=true,
     thickness=3,color=blue),
   pointplot([[rad/2,rad/2]],color=blue,symbol=solidcircle,
     symbolsize=20),      
   textplot([rad/2,rad/2,"Vectorial Angle"],
     font=[ARIAL,bold,14],align=right));  
end proc:


ball:=proc(x,y)
 
 display(
   pointplot([[x,y]],color=blue,symbol=solidcircle,
     symbolsize=10),
   pointplot([[0,0],[x,y]],connect=true,color=red));   
end proc:

ClearAll:=proc()

 SetOption('PPRad'=""),   SetOption('PPDeg'=""),
 SetOption('PolarPt'=""), SetOption('RectgPt'=""),
 SetOption('Second'=""),  SetOption('Seconddeg'=""),
 SetOption('Third'=""),   SetOption('Thirddeg'="")
end proc:


Instruction:="Instruction: To plot a polar point, you may use the default coordinates and press\nthe Play Button or you may enter your own coordinates by pressing the Clear Button, entering your coordinates, pressing the Run Button, and pressing Play button:":

VerEnt:="Right Click a dimmed field to verify how entry is calculated.":

STpPlt:="Note: \nWhen r is positive, r is measured in the positive direction as indicated by the arrow in the radial line; when r is negative, r is measured in the opposite direction; when r equals 0 with any angle theta, polar origin (0,theta) corresponds to the pole and has the same location as (0,0) in rectangular coordinate system. \nWhen theta is positive,theta is rotated in the counterclockwise direction; when theta is negative, it is rotated clockwise.":

EquiPP:="Unlike the Rectangular Coordinate System,location of polar points is not\n unique. The plot of given polar point is the same as the plot of the following points.":

ViewComp:="View the selected part in the Polar Coordinate System":
 

PolarCoordSys Procedure: Generates a polar coordinate system. 

> PolarCoorSys:=proc()
local Hi,i,j,M,m,N,T,t,theta,rad;
uses Maplets:-Tools, plots;
rad:=parse(Get('
PPRad'));
if rad > 25 then Hi:=rad; else Hi:=25; end if;
for i from 1 to Hi do M[i]:=polarplot(i); end do:
for j from 1 to 13 do
 m:=(j-1)*30; theta:=m*Pi/180;  
 N[m]:=pointplot([[0,0],[Hi*cos(theta),Hi*sin(theta)]],connect=true);
 t[m]:=sprintf("(%a,%a)",
       evalf[3](Hi*cos(theta)),evalf[3](25*sin(theta)));  
 if (m>=0 and m <=90) or (m>=270 and m<360) then
    if m=90 then
       T[m]:=textplot([Hi*cos(theta),Hi*sin(theta),t[m]],
             align=above);
    elif m=270 then
       T[m]:=textplot([Hi*cos(theta),Hi*sin(theta),t[m]],
             align=below);
    else
       T[m]:=textplot([Hi*cos(theta),Hi*sin(theta),t[m]],
             align=right);
    end if;
 else
     T[m]:=textplot([Hi*cos(theta),Hi*sin(theta),t[m]],align=LEFT);
 end if;  
end do;
display({seq(M[i],i=1..Hi),seq(N[(j-1)*30],j=1..12),
        seq(T[(k-1)*30],k=1..12)},  
 axes=boxed,scaling=constrained,title="Polar Coordinate System");
end proc:
 

StepPlot Procedure: Narrates step by step on how to plot polar points 

> StepPlot:=proc(rad,theta)
 local sptxt;    
 
if rad > 0 and evalf(theta) > 0 then
    sptxt:=`Consider the case where r>0 and theta>0. Step 1: From the pole P[0,0] measure `* [rad] *` units along the polar axis ending at Q`*[rad,0]*`. Step 2: Rotate line segment PQ  counterclockwise ` * [theta] *` units ending at point R` *[rad,theta]* `. Step3: R is the plot of the given point.`;     
 
elif rad > 0 and evalf(theta) < 0 then
    sptxt:=`Consider the case where r>0 and theta<0.
Step 1: From the pole P[0,0] measure `*[rad]*` units along the polar axis ending at Q`*[rad,0]*`. Step 2: Since theta < 0, rotate line segment PQ clockwise `*[theta]*` units ending at R` *[rad,theta]*`. Step3: R is the plot of the given point.`;     
 
elif rad < 0 and evalf(theta) > 0 then
    sptxt:=`Consider the case where r<0 and theta>0. Step 1: From the pole P[0,0] measure `*[abs(rad)]*` units along the polar axis ending at Q`*[abs(rad),0]*`. Step 2: Since theta > 0, rotate line segment PQ counterclockwise`*[theta]*` units ending at Q`*[abs(rad),theta]*`. Step3: Since r < 0, measure the same distance opposite the positive direction of the radial line ending at R`*[rad,theta]*` Step4: R is the plot of the given point.`;     
 
elif rad < 0 and evalf(theta) < 0 then
    sptxt:=`Consider the case where r<0 and theta<0. Step 1: From the pole P[0,0] measure `*[abs(rad)]*` units along the polar axis ending at Q`*[abs(rad),0]*`. Step 2: Since theta < 0, rotate line segment PQ clockwise`*[abs(theta)]*` units ending at Q`*[abs(rad),theta]*` Step3: Since r < 0, measure the same distance opposite the positive direction of the radial line ending at point R`*[rad,theta]*` Step4: R is the plot of the given point.`;  
 end if;   
 return(sptxt);
end proc:
 

PlotIt Procedures:  

> PlotIt:=proc()
local rad,theta,ppd,h5,par,Step,PPDeg,A,B,C,D,P,Q,R;
uses Maplets:-Tools, plots;
par:=PolarCoorSys();
rad:=parse(Get('PPRad')); PPDeg:=parse(Get('PPDeg'));
theta:=(Pi/180)*parse(Get('PPDeg'))
;
if rad > 0 and evalf(theta)>0 then
  Set('PolarPt'=[rad,theta]);
  Set('RectgPt'=[evalf[3](rad*cos(theta)),
    evalf[3](rad*sin(theta))]);
  Set('ReqMLV'=StepPlot(rad,theta));
  Set('Second'=[-rad, simplify(theta+Pi)]);
  Set('Third'=[-rad, simplify(theta-Pi)]);
  Set('Seconddeg'=[-rad, simplify((theta+Pi)*(180/Pi))]);
  Set('Thirddeg'=[-rad, simplify(theta-Pi)*(180/Pi)]);
  Step[1]:=animate(ball,[t,0],t=0..abs(rad)*cos(0),frames=25,
    trace=25,scaling=constrained,background=par):
  Step[2]:=animate(ball,[abs(rad)*cos(t),
    abs(rad)*sin(t)],t=0..theta,
    frames=25,trace=50,scaling=constrained,background=par):    
  B:=pointplot([[0,0],[abs(rad),0]],color=green,symbol=solidcircle,
    symbolsize=20):
  Step[3]:=display(
    animate(ball,[t,tan(theta)*t],t=0..abs(rad)*cos(theta),
      frames=25,trace=25,scaling=constrained,background=par),
    arrow(<rad*cos(theta),rad*sin(theta)>,shape=arrow,
      thickness=2,color=blue));         
  C:=pointplot([[rad,0],[rad*cos(theta),rad*sin(theta)]],
     color=green,symbol=solidcircle,symbolsize=20):    
  D:=pointplot([[rad*cos(theta),rad*sin(theta)]],
     color=green,symbol=solidcircle,symbolsize=20):   
  R:=textplot([abs(rad)*cos(theta),abs(rad)*sin(theta),"R"],
     align={below,left},font=[HELVETICA,BOLDOBLIQUE],
     caption=
     typeset("Plot of polar point R(", rad,",",theta,")"));
  A:=display(seq(Step[i],i=1..3),insequence=true);
  Q:=textplot([abs(rad),0,"Q"],align={below,right}):
  P:=textplot([0,0,"P"],align=below):  
  display({P,B,Q,C,D,R,A},insequence=false);
elif rad < 0 and evalf(theta)>0 then

  
Set('PolarPt'=[rad,theta]);
  Set('RectgPt'=[evalf[3](rad*cos(theta)),
    evalf[3](rad*sin(theta))]);
  Set('ReqMLV'=StepPlot(rad,theta));
  Set('Second'=[-rad, simplify(theta+Pi)]);
  Set('Third'=[-rad, simplify(theta-Pi)]);
  Set('Seconddeg'=[-rad, simplify((theta+Pi)*(180/Pi))]);
  Set('Thirddeg'=[-rad, simplify(theta-Pi)*(180/Pi)]);

  
Step[1]:=animate(ball,[t,0],t=0..abs(rad)*cos(0),frames=25,
    trace=25,scaling=constrained,background=par):
  Step[2]:=animate(ball,[abs(rad)*cos(t),abs(rad)*sin(t)],
    t=0..theta,frames=25,trace=50,scaling=constrained,
    background=par):    
  B:=pointplot([[0,0],[abs(rad),0]],color=green,symbol=solidcircle,
     symbolsize=20):
  Step[3]:=display(
    animate(ball,[t,tan(theta+Pi)*t],t=0..abs(rad)*cos(theta+Pi),
    frames=25,trace=25,scaling=constrained,background=par),
    arrow(<abs(rad)*cos(theta+Pi),abs(rad)*sin(theta+Pi)>,
      shape=arrow, thickness=2,color=blue));
    C:=pointplot([[abs(rad),0],
       [abs(rad)*cos(theta),abs(rad)*sin(theta)]],
       color=green,symbol=solidcircle,symbolsize=20):
    D:=pointplot([[abs(rad)*cos(theta+Pi),
       abs(rad)*sin(theta+Pi)]],color=green,symbol=solidcircle,
       symbolsize=20):
    R:=textplot([abs(rad)*cos(theta+Pi),
       abs(rad)*sin(theta+Pi),"R"],
    align={below,left},font=[HELVETICA,BOLDOBLIQUE],
    caption=
       typeset("Plot of polar point R(", rad,",",theta,")"));
    A:=display(seq(Step[i],i=1..3),insequence=true);
    Q:=textplot([abs(rad),0,"Q"],align={below,right}):
    P:=textplot([0,0,"P"],align=below):  
    h5:=display({P,B,Q,C,D,R,A},insequence=false);
elif rad > 0 and evalf(theta)<0 then
  Set('PolarPt'=[rad,theta]);
  Set('RectgPt'=[evalf[3](rad*cos(theta)),
    evalf[3](rad*sin(theta))]);
  Set('ReqMLV'=StepPlot(rad,theta));
  Set('Second'=[-rad, simplify(theta+Pi)]);
  Set('Third'=[-rad, simplify(theta-Pi)]);
  Set('Seconddeg'=[-rad, simplify((theta+Pi)*(180/Pi))]);
  Set('Thirddeg'=[-rad, simplify(theta-Pi)*(180/Pi)]);
  Step[1]:=animate(ball,[t,0],t=0..abs(rad)*cos(0),frames=25,
    trace=25,scaling=constrained,background=par):
  Step[2]:=animate(ball,[abs(rad)*cos(t),abs(rad)*sin(t)],
    t=0..theta,frames=25,trace=50,scaling=constrained,
    background=par):    
  B:=pointplot([[0,0],[abs(rad),0]],color=green,
    symbol=solidcircle,symbolsize=20):
  Step[3]:=display(
    animate(ball,[t,tan(theta)*t],t=0..abs(rad)*cos(theta),
      frames=25,trace=25,scaling=constrained,background=par),
    arrow(<rad*cos(theta),rad*sin(theta)>,shape=arrow,
      thickness=2,color=blue));         
  C:=pointplot([[rad,0],[rad*cos(theta),rad*sin(theta)]],
     color=green,symbol=solidcircle,symbolsize=20):    
  D:=pointplot([[rad*cos(theta),rad*sin(theta)]],
     color=green,symbol=solidcircle,symbolsize=20):
  R:=textplot([abs(rad)*cos(theta),abs(rad)*sin(theta),"R"],
     align={below,left},font=[HELVETICA,BOLDOBLIQUE],
     caption=
       typeset("Plot of polar point R(", rad,",",theta,")"));  
  A:=display(seq(Step[i],i=1..3),insequence=true);
  Q:=textplot([abs(rad),0,"Q"],align={below,right}):
  P:=textplot([0,0,"P"],align=below):  
  h5:=display({P,B,Q,C,D,R,A},insequence=false);
elif rad < 0 and evalf(theta)<0 then
  Set('PolarPt'=[rad,theta]);
  Set('RectgPt'=[evalf[3](rad*cos(theta)),
    evalf[3](rad*sin(theta))]);
  Set('ReqMLV'=StepPlot(rad,theta));
  Set('Second'=[-rad, simplify(theta+Pi)]);
  Set('Third'=[-rad, simplify(theta-Pi)]);
  Set('Seconddeg'=[-rad, simplify((theta+Pi)*(180/Pi))]);
  Set('Thirddeg'=[-rad, simplify(theta-Pi)*(180/Pi)]);
  Step[1]:=animate(ball,[t,0],t=0..abs(rad)*cos(0),frames=25,
    trace=25,scaling=constrained,background=par):
  Step[2]:=animate(ball,[abs(rad)*cos(t),
    abs(rad)*sin(t)],t=0..theta,frames=25,trace=50,
    scaling=constrained,background=par):    
  B:=pointplot([[0,0],[abs(rad),0]],color=green,
    symbol=solidcircle,symbolsize=20):
  Step[3]:=display(
    animate(ball,[t,tan(theta)*t],t=0..rad*cos(theta),
      frames=25,trace=25,scaling=constrained,background=par),
    arrow(<rad*cos(theta),rad*sin(theta)>,shape=arrow,
      thickness=2,color=blue),
    textplot([rad*cos(theta),rad*sin(theta),"R"],
      align={below,left},font=[HELVETICA,BOLDOBLIQUE],
      caption=
        typeset("Plot of polar point R(",rad,",",theta,")")));
  C:=pointplot([[rad,0],[rad*cos(theta),rad*sin(theta)]],
     color=green,symbol=solidcircle,symbolsize=20):    
  D:=pointplot([[rad*cos(theta),rad*sin(theta)]],
     color=green,symbol=solidcircle,symbolsize=20):        
  A:=display(seq(Step[i],i=1..3),insequence=true);
  Q:=textplot([abs(rad),0,"Q"],align={below,right}):
  P:=textplot([0,0,"P"],align=below):  
  h5:=display({P,B,Q,C,D,A},insequence=false);
end if;
end proc:
 

Maplet 

Main Menu 

> MainMenu:=proc()
BoxColumn(border=true,caption="Select a particular section",
 font=Font("Arial",14,bold),TextField[Case](visible=false),
 BoxRow(HorizontalGlue(),                                 
   BoxColumn(
     Label(" Plot of Polar Points",font=Font("Arial",12,bold)),
     Button("Section 1",onclick=(GTSSS),font=Font("Arial",12,bold),
       Action[GTSSS](SetOption(Case=1),
       SetOption(PPRad=15),SetOption(PPDeg=150),
       Evaluate(function=PlotIt,target=P),RunWindow(Section1)))),    
   BoxColumn(
     Label(" Graph of Special Functions",font=Font("Arial",12,bold)),
     Button("Section 2",onclick=(GTSAS),font=Font("Arial",12,bold),        
       
enabled=false,Action[GTSAS](SetOption(Case=2),
       CloseWindow(IntroWin)))),      
   HorizontalGlue()),    
 BoxRow(HorizontalGlue(),  
   BoxColumn(
     Label(" Graph of Special Functions",font=Font("Arial",12,bold)),
     Button("Section 3",onclick=(GTAAS),font=Font("Arial",12,bold),        
       enabled=false,Action[GTAAS](SetOption(Case=3),
       CloseWindow(IntroWin)))),        
   BoxColumn(
     Label(" Conic Sections in Polar Form",font=Font("Arial",12,bold)),    
     Button("Section 4",onclick=(GTSSA),font=Font("Arial",12,bold),        
       
enabled=false,Action[GTSSA](CloseWindow(IntroWin),
       SetOption(Case=4)))),      
   HorizontalGlue()),   
 BoxRow(HorizontalGlue(),
   Button("Exit",Shutdown(), font=Font("Arial",14,bold)),
   HorizontalGlue()),   
 BoxRow(HorizontalGlue(),                  
   BoxColumn(background="#DDFFFF",
     Label("Developed by P.M. Velez"),
     Label("Professor Emeritus of Mathematics, Los Angeles City College"),
     Label("All Rights Reserved")),
   HorizontalGlue())                   
)
end proc:
 

Lesson1 

> Lesson1:=proc()
BoxColumn(border=true,caption="About the Polar Point",
 inset=0,spacing=0,font=Font("Arial",12,bold),
 BoxRow(
   Label(
VerEnt,foreground=white,background=blue,
    
labattr(center,400,20),font=Font("arial",14,bold))),
 BoxRow(border=true,caption="Enter polar coordinates",
   inset=0,spacing=0,font=Font("Arial",12,bold),        
   BoxColumn(inset=0,spacing=0,
     BoxRow(inset=0,spacing=0,Label(Instruction,

       labattr(left,400,50
))),
     BoxRow(
       BoxColumn(border=true,caption="Radial Coordinate",
         inset=0,spacing=0,TextField['PPRad'](width=3)),
       BoxColumn(border=true,inset=0,spacing=0,
         caption="Angular Coordinate (in degrees)",
         TextField['PPDeg'](width=3))),
     BoxRow(
       Button[DABut]("Clear",onclick=ClearPP,Action[ClearPP]
         (SetOption('Run'(enabled)=true),ClearAll())),    
       Button['Run']("Run",onclick=RunPP,enabled=false,
         Action[RunPP](
Evaluate(function=PlotIt,target=P))),
       Button("Return",onclick=xxx,Action[xxx]
         (CloseWindow(Section1)))))),
 BoxRow(inset=0,spacing=0,
   BoxColumn(      
     BoxRow(inset=0,spacing=0,
       BoxColumn(border=true,caption="Given Polar Point:",
         TextField[PolarPt](width=4,editable=false,
           popupmenu=ppt)),
       BoxColumn(border=true,caption="Rectangular Point:",
         TextField[RectgPt]
           (width=4,editable=false,popupmenu=rpt))))),         
 BoxRow(border=true,caption="Steps to plot polar point",
   inset=0,spacing=0,font=Font("Arial",12,bold),
   BoxColumn(inset=0,spacing=0,
     BoxRow(inset=0,spacing=0,
       Label(
STpPlt,labattr(left,400,95))),
     BoxRow(MathMLViewer['ReqMLV'](width=325,height=80,
       background="#EEFFFF",fontsize=12)))),
 BoxRow(border=true,caption="Component Description",
   inset=0,spacing=0,font=Font("Arial",12,bold),
   MathMLViewer['ReqMLV2'](width=325,height=80,
   background="#EEFFFF",fontsize=12))),    
BoxColumn(border=true,caption="Polar Coordinate System",
 font=Font("Arial",12,bold),inset=0,spacing=0,    
 BoxRow(Plotter[P](continuous=false)),
 BoxRow(
   Button("play",SetOption(P('play')=true)),    
   "Animation\nSpeed Control",
   Slider[DELAY](100..500,300,'showticks','majorticks'=100,
     'minorticks'=50,'snapticks'=false,
   background=khaki,
     onchange=SetOption(target=P,`option`='delay',
     Argument(DELAY)))),

 
BoxRow(border=true,caption="Equivalent polar points",
   font=Font("Arial",12,bold), inset=0,spacing=0,
   BoxColumn(inset=0,spacing=0,
     BoxRow(inset=0,spacing=0,Label(EquiPP)),      
     BoxRow(inset=0,spacing=0,
       BoxColumn(border=true,caption="Angle in radians",
         inset=0,spacing=0,
         BoxRow(inset=0,spacing=0,
           TextField['Second'](width=8,editable=false,
             popupmenu=sec),
           TextField['Third'](width=8,editable=false,
             popupmenu=thd))),
       BoxColumn(border=true,caption="Angle in degrees",
         inset=0,spacing=0,
         BoxRow(
           TextField['Seconddeg'](width=8,editable=false,
             popupmenu=secdeg),     
           TextField['Thirddeg'](width=8,editable=false,
             popupmenu=thddeg)))))),
 BoxRow(border=true,font=Font("Arial",12,bold),
   inset=0,spacing=0,
   caption="View and Describe component of the System",    
   BoxColumn(inset=0,spacing=0,VerticalGlue(),      
     BoxRow(inset=0,spacing=0,HorizontalGlue(),
       RadioButton['Pol']("Pole",group=PartsCoords,
         value=false,onclick=PoleShw,Action[PoleShw]
         (Evaluate(function='PoleDes',target='P'))),
       HorizontalGlue(),  
       RadioButton['PolarAxis']("Polar Axis",group=PartsCoords,
         value=false,onclick=PoleAxisShw,Action[PoleAxisShw]
         (Evaluate(function='PoleAxisDes',target='P'))),
       HorizontalGlue(),
       RadioButton['RadialLine']("Radial Line",
         group=PartsCoords,value=false,
         onclick=RadialLineShw,Action[RadialLineShw]
         (Evaluate(function='RadialLineDes',target='P'))),   
       HorizontalGlue(),  
       RadioButton['VerticalLine']("Vertical Axis  ",
         group=PartsCoords,value=false,onclick=VerticalLineShw,
         Action[VerticalLineShw]
         (Evaluate(function='VerticalAxisDes',target='P'))),
       HorizontalGlue()),        
     BoxRow(inset=0,spacing=0,HorizontalGlue(),

       inset=0,spacing=0,

       RadioButton['PPoint']("Polar Point",group=PartsCoords,
         value=false,onclick=PPointShw,Action[PPointShw]
         (Evaluate(function='PolarPointDes',target='P'))),
       HorizontalGlue(),
       RadioButton['RadialLine']("Radial Line",
         group=PartsCoords,value=false,
         onclick=RadialLineShw,Action[RadialLineShw]
         (Evaluate(function='RadialLineDes',target='P'))),
       HorizontalGlue(),
       RadioButton['VectorialAngle']("Vectorial Angle",
         group=PartsCoords,value=false,onclick=RadialLineShw,
         Action[VectorialAngleShw]
         (Evaluate(function=
VectorialAngleDes,target='P'))),
       HorizontalGlue()),VerticalGlue())))

end proc:
 

PolarFunction 

> PolarFunction:=Maplet(Font[helv10]("helvetica",12),
 onstartup=RunWindow(IntroWin),

Window[IntroWin](title=MainTitle,layout=Introductions,height=350,width=450,
 resizable=false),
BoxLayout[Introductions]( MainMenu() ),

ButtonGroup['IntroType'](),

Window[Section1](title="Section 1: Plot and Analysis of Polar Points",layout=PlotPolarPoint, height=725,width=900,resizable=false),
ButtonGroup['PartsCoords'](),
BoxLayout[PlotPolarPoint](Lesson1()),

Window[pptwin]("Given Polar Point",
 BoxColumn(
   BoxRow(MathMLViewer['pptMLV'](fwh(14,425,150))),
   BoxRow(Button("Close",CloseWindow('pptwin'))))),
PopupMenu[ppt](
 Menu("How this value is derived",
   MenuItem("Press to find out.",
onclick=pptClk,Action[pptClk]              (RunWindow('pptwin'),Evaluate(function=pptFnc))))),

Window[rptwin]("Rectangular Point",
 BoxColumn(
   BoxRow(MathMLViewer['rptMLV'](fwh(14,550,150))),
   BoxRow(Button("Close",CloseWindow('rptwin'))))),
PopupMenu[rpt](
 Menu("How this value is derived",
   MenuItem("Press to find out.",onclick=rptClk,Action[rptClk]             (RunWindow('rptwin'),Evaluate(function=rptFnc))))),

Window[secwin]("Second Polar Point, radians",
 BoxColumn(
   BoxRow(MathMLViewer['secMLV'](fwh(14,425,150))),
   BoxRow(Button("Close",CloseWindow('secwin'))))),
PopupMenu[sec](
 Menu("How this value is derived",
   MenuItem("Press to find out.",onclick=secClk,Action[secClk]              (RunWindow('secwin'),Evaluate(function=secFnc))))),

Window[thdwin](
"Third Polar Point, radians",
 BoxColumn(
   BoxRow(MathMLViewer['thdMLV'](fwh(14,425,150))),
   BoxRow(Button("Close",CloseWindow('thdwin'))))),
PopupMenu[thd](
 Menu("How this value is derived",
   MenuItem("Press to find out.",onclick=thdClk, Action[thdClk]
    (RunWindow('thdwin'),Evaluate(function=thdFnc))))),

Window[thddegwin](
"Third Polar Point, degrees",
 BoxColumn(
   BoxRow(MathMLViewer['thddegMLV'](fwh(14,425,150))),
   BoxRow(Button("Close",CloseWindow('thddegwin'))))),
PopupMenu[thddeg](
 Menu("How this value is derived",
   MenuItem("Press to find out.",onclick=thddegClk,
    Action[thddegClk]
(RunWindow('thddegwin'),
    Evaluate(function=thddegFnc))))),

Window[secdegwin]("Secnd Polar Point, degrees",
 BoxColumn(
   BoxRow(MathMLViewer['secdegMLV'](fwh(14,425,150))),
   BoxRow(Button("Close",CloseWindow('secdegwin'))))),
PopupMenu[secdeg](
 Menu("How this value is derived",
   MenuItem("Press to find out.",
    onclick=secdegClk, Action[secdegClk]
    (RunWindow('secdegwin'),Evaluate(function=secdegFnc)))))
):
Maplets:-Display(PolarFunction);
 

>
 

Section 

Lesson1(): Generates the layout for Window(Section1).  It initializes the coordinates of a default polar point,
converts the polar point into rectangular form, derives at least two polar points that have the same location as the given polar point whose angles are given in both degrees and radians. All conversions and derivations are dimmed and enduser has the option to view how the entices came about starting from what formula is used, the substitution to the formula and the evaluation of the substituted expression.  It also generates a template of  the polar coordinate system, plots the given point, provides step-by-step narration on  how the point is plotted, animates the plotting of the point for visualization, provides the ability to identify, visualize and describe parts of  coordinate system.   The procedure also allows endusers to change the default polar point into their choice of polar point and every item discussed above automatically aned dynamically changes.  

PlotIt(): Directs the plot of the given polar point in four different cases: when the radial and angular components are positive; when radial is positive and angular is negative; when radial is negative and angular is positive; when radial and angular are both negative.
 

References 

Larson and Hostetler,  Precalculus with Limits,. Houghton and Mifflin, 2007. 

Sullivan and Sullivan, Precalculus, Prentice Halll, 2007.
 

Legal Notice: The copyright for this application is owned by the author. Neither Maplesoft nor the author are responsible for any errors contained within and are not liable for any damages resulting from the use of this material. This application is intended for non-commercial, non-profit use only. Contact the author for permission if you wish to use this application in for-profit activities.