Source of RegularPolygon.java


  2: /**
  3:  * A class implementing the RegularPolygonal interface. This class represents
  4:  * a regular polygon (duh). It implements the getEdgeLength method from
  5:  * RegularPolygonal, the getNumberOfSides method from Polygonal, and the getArea
  6:  * and getPerimeter methods from Measurable.
  7:  *
  8:  * @author Mark Young (A00000000)
  9:  */
 10: public class RegularPolygon implements RegularPolygonal {

 12:     private double sideLength;
 13:     private int numSides;

 15:     /**
 16:      * Create a regular polygon with the given measures.
 17:      *
 18:      * @param reqSides the number of sides
 19:      * @param reqLen the length of each side
 20:      */
 21:     public RegularPolygon(int reqSides, double reqLen) {
 22:         require("# of sides", reqSides > 2, reqSides);
 23:         require("side length", reqLen > 0.0, reqLen);
 24:         numSides = reqSides;
 25:         sideLength = reqLen;
 26:     }

 28:     @Override
 29:     public double getEdgeLength() {
 30:         return sideLength;
 31:     }

 33:     @Override
 34:     public int getNumberOfSides() {
 35:         return numSides;
 36:     }

 38:     @Override
 39:     public double getArea() {
 40:         double perimeter = getPerimeter();
 41:         double apothem = sideLength / Math.tan(Math.PI / numSides) / 2;
 42:         return perimeter * apothem / 2;
 43:     }

 45:     @Override
 46:     public double getPerimeter() {
 47:         return numSides * sideLength;
 48:     }

 50:     @Override
 51:     public String toString() {
 52:         return "Regular Polygon(" + numSides + ", " + sideLength + ")";
 53:     }

 55:     // ---------- private methods ---------- //
 56:     private static void require(String msg, boolean value, Object obj) {
 57:         if (!value) {
 58:             throw new IllegalArgumentException(msg + ": " + obj);
 59:         }
 60:     }

 62: }