Circle.java


This is the syntax highlighted version of Circle.java from 3.3 Modular Programming of
Introduction to Computer Science by Robert Sedgewick and Kevin Wayne.

/*************************************************************************
 *  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
        System.out.println("Fraction in circle = " + 1.0 * yes / N);
    }
}


Last updated: Wed Jun 30 15:42:30 EDT 2004 .
Copyright © 2004, Robert Sedgewick and Kevin Wayne.