![]() Capt. Horatio T.P. Webb |
Parks -- Fall 2013 |
| Methods: | |
|
x is the horizontal center of the circle y is the vertical center of the circle r is the circle's radius angle are expressed in radians: 1 radian = 180/pi or 57.29577 degrees; 1 degree = pi/180 0° is at 3 o'clock, (0 radians) 90° is at 6 o'clock (radians = pi/2 or Math.PI/2.0), 180° is at 9 o'clock (radians = pi radians or Math.PI), 270° is at 12 o'clock(radians = 3 x pi/2 or 3.0 * Math.PI /2.0), 360° is at 3 o'clock (radians = 2.0 * Math.PI) start_angle (in radians, normally calculated using degrees and the formula: radians = degree * Math.PI /180.0) end_angle (in radians, normally calculated using degrees and the formula: radians = degree * Math.PI /180.0) [,counterclockwise] is OPTIONAL, false=clockwise, true=counter clockwise | |
| name_for_the_canvas_context.arcTo(x1,y1,x2,y2,radius); |
x1 is the horizontal co-ordinate of the first point y1 is the vertical co-ordinate of the first point x2 is the horizontal co-ordinate of the second point y2 is the vertical co-ordinate of the second point r is the circle's radius drawn between the two points |
Here is a canvas:
<canvas id="arc_example" width="500" height="350"" style="border:solid blue 1px;"></canvas>
Here is the code:
var aex = document.getElementById("arc_example");
var arrc = aex.getContext("2d");
x=100.;
y=100.;
r=50.;
degdiff=36.0;
dstart=0.;
dend=degdiff;
arrc.strokeStyle="black";
arrc.lineWidth=1;
arrc.beginPath();
for (i=0;i<10;i++)
{
if ( i % 2 == 0)
{
arrc.beginPath();
a1=dstart*Math.PI/180.0;
a2=dend*Math.PI/180.0;
arrc.arc(x,y,r,a1,a2,false);
arrc.stroke();
arrc.closePath();
}
dstart=dstart+degdiff;
dend=dend+degdiff;
}
arrc.strokeText("1. alternating arcs",x-40,y);
arrc.beginPath();
arrc.strokeStyle="green";
arrc.lineWidth=3;
arrc.arc(250,100,50,0.0,2.0*Math.PI,false);
arrc.stroke();
arrc.closePath();
arrc.lineWidth=1;
arrc.strokeText("2. green width=3",210,y);
arrc.beginPath();
arrc.fillStyle="blue";
arrc.arc(400,100,50,0.0,2.0*Math.PI,false);
arrc.fill();
arrc.closePath();
arrc.strokeStyle="white";
arrc.strokeText("3. blue solid",360,y);
arrc.beginPath();
arrc.fillStyle="blue";
arrc.arc(100,250,50,0.0,2.0*Math.PI,false);
arrc.fill();
arrc.strokeStyle="red";
arrc.lineWidth=4;
arrc.arc(100,250,50,0.0,2.0*Math.PI,false);
arrc.stroke();
arrc.closePath();
arrc.lineWidth=1;
arrc.strokeStyle="white";
arrc.strokeText("4. blue red border",60,250);
var pie_pc = new Array(0.25, 0.10, 0.20, 0.15, 0.30);
var pie_color = new Array("red","blue","green","gray","yellow");
astart=0.0
y0=250.0;
x0=250.0;
r=50.0;
arrc.strokeStyle="black";
arrc.strokeText("5. Pie Chart",350,200);
for (i=0;i<5;i++)
{
arrc.beginPath();
arrc.moveTo(x0,y0);
aend=astart+pie_pc[i]*360.0;
a1=astart*Math.PI/180.0
y1=50.0*Math.sin(a1)+y0;
x1=50.0*Math.cos(a1)+x0;
arrc.lineTo(x1,y1);
a2=aend*Math.PI/180.0;
y2=50.0*Math.sin(a2)+y0;
x2=50.0*Math.cos(a2)+x0;
arrc.arc(x0,y0,r,a1,a2);
arrc.moveTo(x2,y2);
arrc.lineTo(x0,y0);
arrc.fillStyle=pie_color[i];
arrc.fill();
arrc.lineWidth=1;
arrc.stroke();
arrc.strokeText(" "+pie_color[i]+" = "+(pie_pc[i]*100.0)+" %",350,220+i*20);
astart=aend;0
}