当前位置: 首页 > 面试题库 >

如何检查2条线段是否相交?

穆毅然
2023-03-14
问题内容

如何检查两个线段L1(p1,p2)和L2(p3,p4)是否相交?我不需要相交点,我只需要知道它们是否相交即可。由于我的应用程序对此进行了大量计算,因此我需要找到一个快速的解决方案。

谢谢


问题答案:

要测试两个线段是否相交,可以使用Java的2D
API,特别是Line2D的方法。

Line2D line1 = new Line2D.Float(100, 100, 200, 200);
Line2D line2 = new Line2D.Float(150, 150, 150, 200);
boolean result = line2.intersectsLine(line1);
System.out.println(result); // => true

// Also check out linesIntersect() if you do not need to construct the line objects
// It will probably be faster due to putting less pressure on the garbage collector
// if running it in a loop
System.out.println(Line2D.linesIntersect(100,100,200,200,150,150,150,200));

如果您有兴趣了解代码的工作方式,以便查看是否可以在特定域中更快地进行编码,可以查看OpenJDK实现的代码。但是请记住,在进行优化之前,请务必先进行分析;它可能足够快。



 类似资料:
  • 问题内容: 我想在Swing中检查用户名和密码。 该检查适用于用户名,但不适用于JPaswordfield。我正在发布相关代码: 问题答案: 非常简单地获取文本,使用该文本返回文本的a,然后简单地获取数组的长度并检查它是否等于0:

  • 我试图找出如何接受2个整数参数,一个初始整数称为“start”,另一个整数称为“destination”。我想使用我的方法中的两个参数,首先检查起始整数是否在矩阵中,然后检查目标整数是否与它周围的4个元素(north,east,south,west)相邻。 例1: 如果起始整数是(6),则检查目的整数(7)是否与起始整数相邻。如果是真的,那就做点什么。

  • 问题内容: 有什么方法可以检查一个集合是否包含一个或多个具有比使用contains循环两次更好的性能的值? 在其他意义上看起来像这样 问题答案: 循环的实现遍历每个元素并进行测试,因此调用两次 效率低下 。 您可以编写自己的循环,使用已编译的regex 模式同时检查两者,同时查找两个名称:

  • 我想比较两个数组,看看它们是否有相同的值。 如果我有一个数组,名为 以及如何将坐标放入“coords”变量(哦,等等,它被称为“ship”,而不是coords。我忘了): //arr.add(new javax.vecmath.vector3f(float.parsefloat(x),float.parsefloat(y),float.parsefloat(z));}谢谢!

  • 问题内容: 我已经创建了一些文档并设法进行了一些简单的查询,但是我无法创建一个查询来查找仅存在字段的文档。 例如,假设这是一个文档: 现在,我需要一个查询,该查询将把所有文档包含文本的地方都带进去。 如果没有文本,则将如下所示: 因此,我想检查中该字段的存在。 我该如何实现? 问题答案: 您可以将运算符与符号结合使用。mongo-shell中的裸查询应如下所示: Java中的测试用例可能如下所示:

  • 我需要检查运行某段代码的线程是否是主(UI)线程。我怎样才能做到这一点呢?