* 利用海倫公式求面積就行了
如果周長為l,p為周長的壹半,a,b,c為三邊
面積s的平方 = p*(p-a)*(p-b)*(p-c)
註意,開發在java中使用Math。sqrt(要開平方的數)
* */
public class Triangle {
private boolean isTriangle = false; //用於判斷3個點去定的3個邊是否能組成三角形
private double a = 0.0d; //邊a
private double b = 0.0d; //邊b
private double c = 0.0d; //邊c
private double l = 0.0d; //周長
private double s = 0.0f; //面積
//(x1,y1),(x2,y2),(x3,y3)分別為三角形三個頂點坐標
public Triangle(int x1, int y1, int x2, int y2, int x3, int y3){
Point p1 = new Point(x1,y1);
Point p2 = new Point(x2,y2);
Point p3 = new Point(x3,y3);
a = getSide(p1,p2); //利用兩點求邊
b = getSide(p1,p3);
c = getSide(p2,p3);
if(isTriangle){ //如果是三角形再求周長和面積
getL();
getS();
}
}
//利用兩個點來獲取邊
private double getSide(Point p1, Point p2){
double sub1 = 0.0d; //橫坐標之差
double sub2 = 0.0d; //縱坐標之差
sub1 = p1.x > p2.x ? p1.x - p2.x : p2.x - p1.x;
sub1 = p1.y > p2.y ? p1.y - p2.y : p2.y - p1.y;
return Math.sqrt((sub1*sub1 + sub2*sub2));
}
//獲取周長
private void getL(){
l = a + b + c;
}
//獲取面積
public void getS(){
double p = l/2;
s = Math.sqrt(p*(p-a)*(p-b)*(p-c));
}
public void print(){
System.out.println("三邊長為:"+a+","+b+","+c);
System.out.println("周長為:"+l);
System.out.println("面積為:"+s);
}
//點類(僅供 Triangle 類使用的內部類)
private class Point{
public int x = 0;
public int y = 0;
public Point(int px, int py){
x = px;
y = py;
}
}
public static void main(String[] args) {
//求(1,1)、(1,4)、(5,1)三個坐標組成的三角形的周長和面積
Triangle tri = new Triangle(1,1,1,4,5,1);//實例化壹個三角形
tri.print(); //輸出屬性
}
}