gpt4 book ai didi

java - 试图弄清楚两条线段是否相交

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:24:38 26 4
gpt4 key购买 nike

<分区>

我有一条由两点 p1 和 p2 组成的线段,还有一条由点 p3 和 p4 组成的线段。我想弄清楚它们是否相交,到目前为止,我还没有运气。到目前为止,这是我的代码:

public static double angle(Point p1, Point p2, Point p3) {
double AB = length(p2, p1);
double BC = length(p2, p3);
double AC = length(p3, p1);
return Math.acos((sqr(BC) + sqr(AB) - sqr(AC)) / (2 * BC * AB)) * (180 / Math.PI);
}

public static boolean doIntersect(Point p1, Point p2, Point p3, Point p4) {
double a = angle(p4, p3, p2);
double b = angle(p3, p2, p1);
double c = 180 - b - a;

System.out.println("a: " + a + ", b: " + b + ", c:" + c);

if((length(p3, p2) * Math.sin(a)) / Math.sin(c) > length(p2, p1)) return false;
if((length(p3, p2) * Math.sin(b)) / Math.sin(c) > length(p3, p4)) return false;
return true;
}

public static double length(Point point1, Point point2) {
return Math.sqrt(sqr(point1.x - point2.x) + sqr(point1.y - point2.y));
}

public static double sqr(double doub) {
return Math.pow(doub, 2);
}

但这行不通。有时,角度“c”甚至会变成负数。

此外,Point 是一个带有两个参数的自定义类:x 和 y。应该是不言自明的。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com