Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Triangle {
- private double ax;
- private double ay;
- private double bx;
- private double by;
- private double cx;
- private double cy;
- //added these variables because I use them so frequently when calculating angles, area, perimeter, etc.
- private double sideAB;
- private double sideBC;
- private double sideAC;
- public Triangle(double x1, double y1, double x2, double y2, double x3, double y3)
- {
- ax = x1;
- ay = y1;
- bx = x2;
- by = y2;
- cx = x3;
- cy = y3;
- sideAB= Math.abs(Math.sqrt(Math.pow(bx-ax, 2)+Math.pow(by-ay, 2)));
- sideBC= Math.abs(Math.sqrt(Math.pow(cx-bx, 2)+Math.pow(cy-by, 2)));
- sideAC= Math.abs(Math.sqrt(Math.pow(cx-ax, 2)+Math.pow(cy-ay, 2)));
- }
- public double getPerimeter()
- {
- //add the 3 sides together for the perimeter
- double perimeter = sideAB + sideBC + sideAC;
- return perimeter;
- }
- public double getArea()
- {
- //used Heron's formula to find the area of the triangle
- double s = (sideAB + sideBC + sideAC)/2;
- double area = Math.sqrt(s*(s - sideAB)*(s - sideBC)*(s - sideAC));
- return area;
- }
- public double getSideAB()
- {
- return sideAB;
- }
- public double getSideBC()
- {
- return sideBC;
- }
- public double getSideAC()
- {
- return sideAC;
- }
- public double getAngleC()
- {
- //Law of cosines to find the angle
- double a2 = Math.pow(sideAB, 2);
- double b2 = Math.pow(sideBC, 2);
- double c2 = Math.pow(sideAC, 2);
- double cosC = ((b2 + c2)-a2)/((2*sideBC)*sideAC);
- double angleC = Math.acos(cosC);
- angleC = Math.toDegrees(angleC);
- return angleC;
- }
- public double getAngleB()
- {
- double a2 = Math.pow(sideAB, 2);
- double b2 = Math.pow(sideBC, 2);
- double c2 = Math.pow(sideAC, 2);
- double cosB = ((a2+b2-c2)/(2*sideAB*sideBC));
- double angleB = Math.acos(cosB);
- angleB = Math.toDegrees(angleB);
- return angleB;
- }
- public double getAngleA()
- {
- double a2 = Math.pow(sideAB, 2);
- double b2 = Math.pow(sideBC, 2);
- double c2 = Math.pow(sideAC, 2);
- double cosA = ((a2+c2-b2)/(2*sideAB*sideAC));
- double angleA = Math.acos(cosA);
- angleA = Math.toDegrees(angleA);
- return angleA;
- }
- public double maxSide()
- {
- //if-else if-else statements for max and min sides functions
- if (sideAB >= sideBC && sideAB >= sideAC)
- {
- return sideAB;
- }
- else if(sideBC >= sideAB && sideBC >= sideAC)
- {
- return sideBC;
- }
- else
- {
- return sideAC;
- }
- }
- public double minSide()
- {
- if (sideAB <= sideBC && sideAB <= sideAC)
- {
- return sideAB;
- }
- else if(sideBC <= sideAB && sideBC <= sideAC)
- {
- return sideBC;
- }
- else
- {
- return sideAC;
- }
- }
- public double maxAngle()
- {
- double a2 = Math.pow(sideAB, 2);
- double b2 = Math.pow(sideBC, 2);
- double c2 = Math.pow(sideAC, 2);
- double cosC = ((b2 + c2)-a2)/((2*sideBC)*sideAC);
- double angleC = Math.acos(cosC);
- angleC = Math.toDegrees(angleC);
- double cosB = ((a2+b2-c2)/(2*sideAB*sideBC));
- double angleB = Math.acos(cosB);
- angleB = Math.toDegrees(angleB);
- double cosA = ((a2+c2-b2)/(2*sideAB*sideAC));
- double angleA = Math.acos(cosA);
- angleA = Math.toDegrees(angleA);
- if (angleA >= angleB && angleA >= angleC)
- {
- return angleA;
- }
- else if(angleB >= angleA && angleB >= angleC)
- {
- return angleB;
- }
- else
- {
- return angleC;
- }
- }
- public double minAngle()
- {
- double a2 = Math.pow(sideAB, 2);
- double b2 = Math.pow(sideBC, 2);
- double c2 = Math.pow(sideAC, 2);
- double cosC = ((b2 + c2)-a2)/((2*sideBC)*sideAC);
- double angleC = Math.acos(cosC);
- angleC = Math.toDegrees(angleC);
- double cosB = ((a2+b2-c2)/(2*sideAB*sideBC));
- double angleB = Math.acos(cosB);
- angleB = Math.toDegrees(angleB);
- double cosA = ((a2+c2-b2)/(2*sideAB*sideAC));
- double angleA = Math.acos(cosA);
- angleA = Math.toDegrees(angleA);
- if (angleA <= angleB && angleA <= angleC)
- {
- return angleA;
- }
- else if(angleB <= angleA && angleB <= angleC)
- {
- return angleB;
- }
- else
- {
- return angleC;
- }
- }
- }
- public double maxAngle()
- {
- double a2 = Math.pow(sideAB, 2);
- double b2 = Math.pow(sideBC, 2);
- double c2 = Math.pow(sideAC, 2);
- double cosC = ((b2 + c2)-a2)/((2*sideBC)*sideAC);
- double angleC = Math.acos(cosC);
- angleC = Math.toDegrees(angleC);
- double cosB = ((a2+b2-c2)/(2*sideAB*sideBC));
- double angleB = Math.acos(cosB);
- angleB = Math.toDegrees(angleB);
- double cosA = ((a2+c2-b2)/(2*sideAB*sideAC));
- double angleA = Math.acos(cosA);
- angleA = Math.toDegrees(angleA);
- if (angleA >= angleB && angleA >= angleC)
- {
- return angleA;
- }
- else if(angleB >= angleA && angleB >= angleC)
- {
- return angleB;
- }
- else
- {
- return angleC;
- }
- }
- public double maxAngle() {
- if(getAngleA() => getAngleB() && getAngleA() => getAngleC())
- return getAngleA();
- if(getAngleB() => getAngleA() && getAngleB() => getAngleC())
- return getAngleB();
- return getAngleC();
- }
- private double x, y;
- public double getX();
- public double getY();
- public void setX(double newX);
- public void setY(double newY);
- public void setXY(double newX, double newY);
- public double getDistance (Point other);
- public double getAngle (Point other);
- private Point a, b, c;
- // Can just call Point stuff directly for distances (simple code).
- double getDistAB() { return a.getDistance (b); }
- double getDistAC() { return a.getDistance (c); }
- double getDistBC() { return b.getDistance (c); }
- double getPerimeter() { return getDistAB() + getDistAC() + getDistBC(); }
- // Returns the angle inside triangle at the first vertex (complex code).
- double getAngleAtPointX (Point x, Point y, Point z) {
- double angle = x.getAngle (y) - x.getAngle (z);
- if (angle < 0)
- angle = -angle;
- if (angle > 180)
- angle = 360 - angle;
- return angle;
- }
- // Then just call that with different arguments.
- double getAngleA() { return getAngleAtPoint (a, b, c); }
- double getAngleB() { return getAngleAtPoint (b, a, c); }
- double getAngleC() { return getAngleAtPoint (c, a, b); }
- public class Angle {
- private double angle;
- public Angle() {
- }
- public double getAngle() {
- return this.angle;
- }
- public void setAngle(Side side1, Side side2, Side side3) {
- double a2 = Math.pow(side1.getLength(), 2);
- double b2 = Math.pow(side2.getLength(), 2);
- double c2 = Math.pow(side3.getLength(), 2);
- double cosB = ((a2+b2-c2)/(2*side1.getLength()*side2.getLength()));
- double tempAngle = Math.acos(cosB);
- this.angle = Math.toDegrees(tempAngle);
- }
- public Angle maxAngle(Angle angle1, Angle angle2) {
- Angle temp = angle1.getAngle() > angle2.getAngle() ? angle1 : angle2;
- return temp.getAngle() > this.getAngle() ? temp : this;
- }
- public Angle minAngle(Angle angle1, Angle angle2) {
- Angle temp = angle1.getAngle() < angle2.getAngle() ? angle1 : angle2;
- return temp.getAngle() < this.getAngle() ? temp : this;
- }
- }
- public class Triangle {
- private Coordinate a;
- private Coordinate b;
- private Coordinate c;
- //added these variables because I use them so frequently when calculating angles, area, perimeter, etc.
- private Side sideAB;
- private Side sideBC;
- private Side sideAC;
- private Angle angleA = new Angle();
- private Angle angleB = new Angle();
- private Angle angleC = new Angle();
- public Triangle(double x1, double y1, double x2, double y2, double x3, double y3)
- {
- a = new Coordinate(x1, y1);
- b = new Coordinate(x2, y2);
- c = new Coordinate(x3, y3);
- sideAB= new Side(a, b);
- sideBC= new Side(b, c);
- sideAC= new Side(a, c);
- angleA.setAngle(sideAB, sideAC, sideBC);
- angleB.setAngle(sideAB, sideBC, sideAC);
- angleC.setAngle(sideAC, sideBC, sideAB);
- }
- /** Your other methods to calculate Perimeter and Area **/
- }
Add Comment
Please, Sign In to add comment