A circle is specified by three numbers: the coordinates of its centre and its radius. Often the coordinates are those of another object, such as the position of a gun. The radius is then the range or maximum distance it can shoot. But for clarity a separate class can be used, e.g.
class Circle {
var fX:Number; // x coordinate
var fY:Number; // y coordinate
var fR:Number; // radius
function Circle(_x:Number, _y:Number, _r:Number) {
fX = _x;
fY = _y;
fR = _r;
}
}
To check whether something is inside a circle is straightforward. Simply compare the distance of the object from the centre of the circle with the radius, using Pythagoras's theorem. As a (member) function that is
function contains(x:Number, y:Number):Boolean {
var dX:Number = x - fX;
var dY:Number = y - fY;
return (dX * dX + dY * dY) < fR * fR;
}
It is almost as simple to check whether two circles intersect:
function intersects(toIntersect:Circle):Boolean {
var dX:Number = toIntersect.fX - fX;
var dY:Number = toIntersect.fY - fY;
var rSum:Number = toIntersect.fR + fR;
return (dX * dX + dY * dY) < rSum * rSum;
}
No comments:
Post a Comment