• 用海龙公式求三角形面积


    海龙公式

    一、概念

    已知三角形的三条边的边长直接求三角形面积的公式。

    表达式为:S=√p(p-a)(p-b)(p-c),它的特点是形式漂亮,便于记忆。

    二、代码实现

    /**
     * 海龙公式:已知三条边求面积
     * S = (p(p-a)(p-b)(p-b))开根号
     * 其中 p=(a+b+c)/2
     */
    public class 求三角形面积{
        public static void main(String[] args) {
    
            Triangle triangle = new Triangle(new Point(0, 0), 
            				new Point(0, 2), new Point(2, 0));
            System.out.println("三角形的周长为:"+triangle.getLength());
            System.out.println("三角形的面积为:"+triangle.getArea());
        }
    }
    
    
    class Triangle extends Shape{
        Point p1;
        Point p2;
        Point p3;
    
        public Triangle(Point p1, Point p2, Point p3) {
            this.p1 = p1;
            this.p2 = p2;
            this.p3 = p3;
        }
    
        //求三角形周长
        public double getLength(){
            double A = new Line(p1,p2).getPointLength();
            double B = new Line(p1,p3).getPointLength();
            double C = new Line(p3,p2).getPointLength();
            return A+B+C;
        }
    
        //求面积(海龙公式)
        public double getArea(){
            double A = new Line(p1,p2).getPointLength();
            double B = new Line(p1,p3).getPointLength();
            double C = new Line(p3,p2).getPointLength();
            double p = (A+B+C)/2;
            return Math.sqrt(p*(p-A)*(p-B)*(p-C));
        }
    
    }
    
    class Line extends Shape{
        Point a;
        Point b;
    
        public Line(Point a,Point b){
            this.a = a;
            this.b = b;
        }
    
        //求两点长度
        public double getPointLength(){
            return Math.sqrt(Math.pow(a.x-b.x,2)+Math.pow(a.y-b.y,2));//两点距离公式
        }
    }
    
    
    class Point extends Shape{
        double x;
        double y;
    
        public Point(double x, double y) {
            this.x = x;
            this.y = y;
        }
    }
    
    class Shape {
    
    }
    
  • 相关阅读:
    为什么建立视图
    Oracle constraints type 约束类型
    python 环境
    查看oracle 数据库的编码格式
    trigger
    闪回操作 flashback
    row_number()over(partiton by order by ) rank() over(partition by order by )
    lag() 偏移
    date
    配置ES中IK分词器远程词库
  • 原文地址:https://www.cnblogs.com/shimmernight/p/13441726.html
Copyright © 2020-2023  润新知