FigureUML

Figure has array of Point, array of sides, array of angles, a bound.
Figure setPoints updateSides, updateAngles, updateBound.
Figure updateSides calculates sides (using distance between two points).
Figure updateAngles calculates innerAngles (using innerAngle between two vectors).
Figure updateBound calculates bound (using findBound – xmin,ymin,xmax,ymax of points).
Triangle getAdditionalUserInput gets 3 Points and setPoints (triangle’s points, sides, angles, bound).
Quadrilateral getAdditionalUserInput gets 4 Points and setPoints (quadrilateral’s points, sides, angles, bound).

Triangle perimeter() = sides[0] + sides[1] + sides[2]
Triangle area() = sides[0] * sides[1] * Math.sin(Math.toRadians(angles[1])) / 2.0

Quadrilateral perimeter() = sides[0] + sides[1] + sides[2] + sides[3]

Trapezoid setPoints also update top, bottom, height
Trapezoid area() = (top + bottom) * height / 2.0
Kite setPoints also update diagonal1 & diagonal2
Kite area() = diagonal1 * diagonal2 / 2.0
Rhombus area() is the same as Kite area()
Rectangle area() = sides[0] * sides[1]
Square area() is the same as Rectangle area()