@Override public Aperture rotate(boolean clockwise) { ArrayList<Point> newPoints = new ArrayList<Point>(); for (Point p : points) { Point point; if (clockwise) point = new Point(p.getY(), -p.getX()); else point = new Point(-p.getY(), p.getX()); newPoints.add(point); } points = newPoints; return this; }
protected Point translate(Point p) { if (rotationAngle == 0) return p; double theta = Math.toRadians(rotationAngle); double x = Math.cos(theta) * p.getX() - Math.sin(theta) * p.getY(); double y = Math.sin(theta) * p.getX() + Math.cos(theta) * p.getY(); return new Point((int) x, (int) y); }
public PolygonalAperture(ArrayList<Point> points) { super(); this.points = points; for (Point p : points) { maxX = Math.max(maxX, p.getX()); minX = Math.min(minX, p.getX()); maxY = Math.max(maxY, p.getY()); minY = Math.min(minY, p.getY()); } }