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.