/****************************************************************************** * 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); } }