java求三角形周长面积及重心外心内心

废话不多说,直接看代码,注释已经很清楚了

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		System.out.println("请分别输入三点坐标");
		int a1=in.nextInt(),a2=in.nextInt();
		int b1=in.nextInt(),b2=in.nextInt();
		int c1=in.nextInt(),c2=in.nextInt();
		double zc=zhouchang(a1,a2,b1,b2,c1,c2);//周长
		
		System.out.println("周长:"+String.format("%.2f", zc));//输出周长
		System.out.println("面积:"+String.format("%.2f", mianji(a1, a2, b1, b2, c1, c2)));//输出面积
		System.out.println(zhongxin(a1, a2, b1, b2, c1, c2));//输出重心坐标
		System.out.println(waixin(a1,a2,b1,b2,c1,c2));//输出外心坐标
		System.out.println(neixin(a1,a2,b1,b2,c1,c2));//输出内心坐标
	}
	private static double distance(int a1, int a2, int b1, int b2) {//求两点距离
		double l=Math.sqrt((a1-b1)*(a1-b1)+(a2-b2)*(a2-b2));
		return l;
	}
	private static double zhouchang(int a1, int a2, int b1, int b2, int c1, int c2) {//求周长
		double l1=distance(a1, a2, b1, b2);
		double l2=distance(a1, a2, c1, c2);
		double l3=distance(b1, b2, c1, c2);
		return l1+l2+l3;
	}
	private static double mianji(int a1, int a2, int b1, int b2, int c1, int c2) {//求面积
		return Math.abs((a1*b2-a1*c2+b1*c2-b1*a2+c1*a2-c1*b2)/2.0);
	}
	private static String zhongxin(int a1, int a2, int b1, int b2, int c1, int c2) {//求重心
		return "重心坐标:"+String.format("%.2f", (a1+b1+c1)/3.0)+" "+String.format("%.2f", (a2+b2+c2)/3.0);
	}
	private static String waixin(int a1, int a2, int b1, int b2, int c1, int c2) {//求外心
		double a=b1-a1;
	    double b=b2-a2;
	    double c=(b1*b1+b2*b2-a1*a1-a2*a2)/2.0;
	    
	    double d=c1-b1;
	    double e=c2-b2;
	    double f=(c1*c1+c2*c2-b1*b1-b2*b2)/2.0;
	    
	    double x=(e*c-b*f)/(a*e-d*b);
	    double y=(c*d-a*f)/(b*d-a*e);
		return "外心坐标:"+String.format("%.2f", x)+" "+String.format("%.2f", y);
	}
	private static String neixin(int a1, int a2, int b1, int b2, int c1, int c2) {//求内心
		double a=distance(b1, b2, c1, c2);
		double b=distance(a1, a2, c1, c2);
		double c=distance(a1, a2, b1, b2);
		double x=(a*a1+b*b1+c*c1)/(a+b+c);
		double y=(a*a2+b*b2+c*c2)/(a+b+c);
		return "内心坐标:"+String.format("%.2f", x)+" "+String.format("%.2f", y);
	}
}

运行结果:
在这里插入图片描述

发布了11 篇原创文章 · 获赞 7 · 访问量 1170

猜你喜欢

转载自blog.csdn.net/leangx86/article/details/104197329