【发布时间】:2014-10-16 23:40:05
【问题描述】:
我试图弄清楚两条线是否在平面中相交。我一直在尝试使用向量的叉积,但一直得到大量错误的答案。我意识到其中一些原因是因为一切都没有那么久,但即使在这个改变之后,我仍然在寻找不存在的交叉点。任何人都可以注意到我是否滑倒了。我一直在努力弄清楚。
我的代码如下:
public static boolean intersecting_segments ( Line_Segment A, Line_Segment B)
{
float side_one;, side_two ,side_three, side_four ;
side_one = cross_product( A, B.p) ;
side_two = cross_product( A, B.q) ;
side_three = cross_product( B, A.p) ;
side_four = cross_product( B, A.q) ;
return ( side_one >0 && side_two <0)|| ( side_one <0 && side_two >0) &&
( side_three >0 && side_four <0)|| ( side_three <0 && side_four >0);
}
public static long cross_product ( Line_Segment S, End_point r )
{
return (long)(((long)r.x -(long)S.p.x)*((long)S.q.y-(long)S.p.y)) -(((long)r.y- (long)S.p.y)*((long)S.q.x-(long)S.p.x));
}
【问题讨论】:
-
您应该将
Line_Segment中的字段数据类型更改为long。 -
我已将 Line_Segment x 和 y 更改为 longs 和 side_XX 但是我似乎仍然遇到同样的问题。