org.locationtech.jts:jts-core:1.19.0
链接: github
package pers.stu.algorithm;
import org.locationtech.jts.algorithm.Angle;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.GeometryFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 角度使用
* @author LiHan
* 2023-11-06 10:11:54
*/
public class AngleUse {
private static final Logger LOGGER = LoggerFactory.getLogger(AngleUse.class);
private Coordinate A = null;
private Coordinate B = null;
private Coordinate C = null;
public static void main(String[] args) {
AngleUse angleUse = new AngleUse();
angleUse.init();
angleUse.test02();
}
public void init() {
A = new Coordinate(1, 3);
B = new Coordinate(1, 1);
C = new Coordinate(3, 1);
}
public void test00() {
LOGGER.info("是否是锐角:{}", Angle.isAcute(A, B, C));
LOGGER.info("是否是钝角:{}", Angle.isObtuse(A, B, C));
LOGGER.info("最小夹角:{}", Angle.angleBetween(A, B, C));
LOGGER.info("最小夹角:{}", Angle.toDegrees(Angle.angleBetween(A, B, C)));
/*
17:11:40.006 [main] INFO pers.stu.algorithm.AngleUse - 是否是锐角:false
17:11:40.007 [main] INFO pers.stu.algorithm.AngleUse - 是否是钝角:false
17:11:40.008 [main] INFO pers.stu.algorithm.AngleUse - 最小夹角:1.5707963267948966
17:11:40.008 [main] INFO pers.stu.algorithm.AngleUse - 最小夹角:90.0
*/
}
public void test01() {
//找对应的位置 0到180(逆时针)之间返回正数,180-360(顺时针)之前返回负数
System.out.println(Angle.toDegrees(Angle.normalize(Angle.toRadians(50))));
//50.0
System.out.println(Angle.toDegrees(Angle.normalize(Angle.toRadians(181))));
//-179.0
System.out.println(Angle.toDegrees(Angle.normalize(Angle.toRadians(369))));
//9.0
System.out.println(Angle.toDegrees(Angle.normalize(Angle.toRadians(-10))));
//-10.0
}
public void test02() {
Coordinate Bi = new Coordinate(0,2);
Coordinate Ai = new Coordinate(1,1);
Coordinate Ci = new Coordinate(1,3);
//延Ai-Bi边逆时针转到Ai-CI边的角度值
System.out.println("Angle.interiorAngle(Bi,Ai,Ci)角度="+Angle.toDegrees(Angle.interiorAngle(Bi,Ai,Ci)));
//Angle.interiorAngle(Bi,Ai,Ci)角度=315.0
//延Ci-Ai边逆时针转到Ai-BI边的角度值
System.out.println("Angle.interiorAngle(Ci,Ai,Bi)角度="+Angle.toDegrees(Angle.interiorAngle(Ci,Ai,Bi)));
//Angle.interiorAngle(Ci,Ai,Bi)角度=45.0
}
}