文章简介
本文汇总一下三角形算法,包含 求边长、求角度等常用函数
直角三角形算法
取边长
- 勾股定理,是一个基本的几何定理,指直角三角形的两条直角边的平方和等于斜边的平方。
引申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