2022-12-19 12:01:28 +00:00
|
|
|
// draw an arc between radii minR and maxR, and between angles minAngle and maxAngle centered at X,Y. All angles are radians.
|
|
|
|
exports.fillArc = function(graphics, X, Y, minR, maxR, minAngle, maxAngle, stepAngle) {
|
2022-12-19 11:52:33 +00:00
|
|
|
var step = stepAngle || 0.2;
|
2022-12-18 19:32:53 +00:00
|
|
|
var angle = minAngle;
|
|
|
|
var inside = [];
|
|
|
|
var outside = [];
|
|
|
|
var c, s;
|
|
|
|
while (angle < maxAngle) {
|
|
|
|
c = Math.cos(angle);
|
|
|
|
s = Math.sin(angle);
|
2022-12-19 11:52:33 +00:00
|
|
|
inside.push(X+c*minR); // x
|
|
|
|
inside.push(Y+s*minR); // y
|
2022-12-18 19:32:53 +00:00
|
|
|
// outside coordinates are built up in reverse order
|
2022-12-19 11:52:33 +00:00
|
|
|
outside.unshift(Y+s*maxR); // y
|
|
|
|
outside.unshift(X+c*maxR); // x
|
2022-12-18 19:32:53 +00:00
|
|
|
angle += step;
|
|
|
|
}
|
|
|
|
c = Math.cos(maxAngle);
|
|
|
|
s = Math.sin(maxAngle);
|
2022-12-19 11:52:33 +00:00
|
|
|
inside.push(X+c*minR);
|
|
|
|
inside.push(Y+s*minR);
|
|
|
|
outside.unshift(Y+s*maxR);
|
|
|
|
outside.unshift(X+c*maxR);
|
|
|
|
|
2022-12-18 19:32:53 +00:00
|
|
|
var vertices = inside.concat(outside);
|
|
|
|
graphics.fillPoly(vertices, true);
|
2022-12-19 11:52:33 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
exports.degreesToRadians = function(degrees){
|
|
|
|
return Math.PI/180 * degrees;
|
|
|
|
}
|
|
|
|
|
|
|
|
exports.radiansToDegrees = function(radians){
|
|
|
|
return 180/Math.PI * degrees;
|
2022-12-18 19:32:53 +00:00
|
|
|
}
|