Circle.java


Below is the syntax highlighted version of Circle.java from §3.5 Inheritance.


/******************************************************************************
 *  Compilation:  javac Circle.java Point.java
 *  Execution:    java Circle
 *
 *  Implementation of a 2D circle.
 *
 ******************************************************************************/

public class Circle {
    private Point center;
    private double radius;

    public Circle(Point center, double radius) {
        this.center = center;
        this.radius = radius;
    }

    public boolean contains(Point p) {  return p.distanceTo(center) <= radius; }

    public double area()      { return Math.PI * radius * radius; }
    public double perimeter() { return 2 * Math.PI * radius;      }

    public boolean intersects(Circle c) {
        return center.distanceTo(c.center) <= radius + c.radius;
    }




    // test client
    public static void main(String[] args) {
        int N = Integer.parseInt(args[0]);

        Point center = new Point(0.5, 0.5);
        Circle c = new Circle(center, 0.5);

        // generate N random points in the unit square and check what fraction are in the circle
        int yes = 0;
        for (int i = 0; i < N; i++) {
            Point p = new Point();
            if (c.contains(p)) yes++;
        }

        // true answer is pi/4 = 0.7853981635
        StdOut.println("Fraction in circle = " + 1.0 * yes / N);
    }
}


Copyright © 2000–2022, Robert Sedgewick and Kevin Wayne.
Last updated: Thu Aug 11 10:27:11 EDT 2022.