Java开发 三角形算法汇总

文章简介

本文汇总一下三角形算法,包含 求边长、求角度等常用函数

直角三角形算法

在这里插入图片描述

取边长

  • 勾股定理,是一个基本的几何定理,指直角三角形的两条直角边的平方和等于斜边的平方。在这里插入图片描述
    引申java算法, 已知两个边长 得出第三边
    /**
     * 直角三角获取斜边
     * @param a 直角边长
     * @param b 直角边长
     * @return 斜边边长
     */
    public static Double getHypotenuseFromLength(double a,double b){
        return Math.sqrt(a*a+b*b);
    }

	/**
     * 直角三角形 根据直角边和斜边求直角边
     * @param right 直角边
     * @param hypotenuse 斜边
     * @return 直角边长
     */
    public static double getRightSideFromLength(double right,double hypotenuse){
        return Math.sqrt(hypotenuse*hypotenuse - right*right);
    }
  • 余弦(余弦函数)。在Rt△ABC(直角三角形)中,∠C=90°(如概述图所示),∠A的余弦是它的邻边比三角形的斜边

公式 cos(α)=a/c

引申java算法, 已知一个边长与夹角,求直斜边

    /**
     * 直角三角形 根据角度和直角边长求斜边
     * @param degree    角度
     * @param width     直角边长
     * @return 斜边边长
     */
    public static double getHypotenuseFromDegree(double degree,double width){
        double cos = Math.cos(Math.toRadians(degree));//余弦
        return width / cos;
    }

    /**
     * 直角三角形 根据角度和斜边求直角边
     * @param degree    角度
     * @param width     斜边
     * @return 直角边长
     */
    public static double getRightSideFromDegree(double degree,double width){
        double cos = Math.cos(Math.toRadians(degree));
        return width * cos;
    }

任意三角形

在这里插入图片描述

  • 余弦定理 任何一边的平方等于其他两边平方的和减去这两边与它们夹角的余弦的积的两倍

在这里插入图片描述

求边长

    /**
     * 根据 B角和C角的c边长,获取A角-C角的b边长
     * @param A
     * @param B
     * @param c
     * @return
     */
    public static double getSideFromSideAndDegree(double A,double B,double c){
        // a÷sin A == b ÷ sin B
        return c/Math.sin(Math.toRadians(A))*Math.sin(Math.toRadians(B));
    }

    /**
     * 获取对边
     * @param a 边长
     * @param b 边长
     * @param degree 角度
     * @return 
     */
    public static Double getLengthOfSide(double a,double b,double degree){
        System.out.println(String.format("a:%s,b:%s,degrees:%s",a,b,degree));
        return Math.sqrt(b*b+a*a-2*a*b*Math.cos(Math.toRadians(degree)));
    }

求夹角


    /**
     * 已知边长  求AC 角度
     * @param a
     * @param b
     * @param c
     * @return
     */
    public static double getDegree(double a,double b,double c){
        // 计算弧度表示的角
        double degrees = Math.acos((a*a +  b*b -c*c)/(2.0*a*b));
        // 用角度表示的角
        return  Math.toDegrees(degrees);
    }

最后推荐一个我自己写的MVVM开源项目《Open MVVM》
(想加扣扣讨论群请进入文章结尾查看群号)

有问题请私信,留言,或者发送邮件到我扣扣邮箱 qingingrunt2010

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值