Guest User

Untitled

a guest
Oct 2nd, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.86 KB | None | 0 0
  1. package com.company;
  2.  
  3. import javafx.scene.canvas.GraphicsContext;
  4. import java.awt.Color;
  5.  
  6.  
  7. public class MyPolygon extends MyShape {
  8.     private int N; // the n represents the number of the polygon's equal side lengths and
  9.     // equal interior angles
  10.     private double sideLength;
  11.     public MyPolygon(int N, double sideLength ,int x, int y, Color color) {
  12.         super(x,y, color);
  13.         this.N = N;
  14.         this.sideLength = sideLength;
  15.     }
  16.  
  17.     public int getN() {
  18.         return N;
  19.     }
  20.  
  21.     public double getSideLength() {
  22.         return sideLength;
  23.     }
  24.  
  25.     public double getAngle() {
  26.         return (180*(getN()-2))/getN();
  27.     }
  28.  
  29.     public double getPerimeter() {
  30.         return getN()*getSideLength();
  31.     }
  32.  
  33.     public double getArea() {
  34.         double getRadians = Math.toRadians(180/getN());
  35.         return Math.pow(getSideLength(),2)*getN()/4*(Math.tan(getRadians));
  36.     }
  37.  
  38.     @Override
  39.     public String toString() {
  40.         return "Polygon has side length " + getSideLength() + " ,Interior angle " + getAngle() +
  41.                 " Perimeter, " + getPerimeter() + " and area, " + getArea();
  42.     }
  43.  
  44.     @Override
  45.     public void draw(GraphicsContext gc) {
  46.         // the value of the x_vertices , y_vertices are in radians
  47.         // everything is converted to radians
  48.         double[] x_vertices = new double[getN()];
  49.         double[] y_vertices = new double[getN()];
  50.         double angle = (getN()-1)*getAngle();
  51.         double angle_increment = (2*Math.PI)/getN();
  52.         for (int i = 0; i < getN(); i++) {
  53.             x_vertices[i] =  super.getX() + (getSideLength()*(Math.cos(angle)));
  54.             y_vertices[i] =  super.getY() + (getSideLength()*(Math.sin(angle)));
  55.             angle += angle_increment;
  56.         }
  57.         gc.setFill(super.getColor());
  58.         gc.fillPolygon(x_vertices,y_vertices,getN());
  59.     }
  60.    
  61. }
Advertisement
Add Comment
Please, Sign In to add comment