java(Android)中两行的冲突检测

java(Android)中两行的冲突检测,java,android,collision-detection,lines,Java,Android,Collision Detection,Lines,非常简单的问题。 如何使用Java绘制的线条实现碰撞检测?就行了。没有矩形、圆形或图像、位图。。就行了 顺便说一下,这些线不直。它们由数百条非常小的线组成,代表玩家的移动(移动时的gps坐标),因此当玩家移动时,它们会在整个地方蜿蜒而行。所有的线路都接通了。一行的终点是下一行的起点,依此类推。在这方面,这是一条不可分割的界线。没有差距 我尝试将线的起点的x,y值存储在一个数组中,然后遍历该数组以确定之前是否访问过该点。如果玩家再次访问准确的坐标系,这是可以的,但是如果他在这些记录点之间的中间位置

非常简单的问题。 如何使用Java绘制的线条实现碰撞检测?就行了。没有矩形、圆形或图像、位图。。就行了

顺便说一下,这些线不直。它们由数百条非常小的线组成,代表玩家的移动(移动时的gps坐标),因此当玩家移动时,它们会在整个地方蜿蜒而行。所有的线路都接通了。一行的终点是下一行的起点,依此类推。在这方面,这是一条不可分割的界线。没有差距

我尝试将线的起点的x,y值存储在一个数组中,然后遍历该数组以确定之前是否访问过该点。如果玩家再次访问准确的坐标系,这是可以的,但是如果他在这些记录点之间的中间位置呢

如果有帮助的话,这就是问题的背景。但主要问题是我在这里的重点。
如何在Java中实现行的冲突检测?

据我所知,您正在以正确的方式进行。我建议可能通过坐标位置对线进行散列,以减少线检查。如果制作了一条估计较大的直线(由较小直线的平均值组成),并使用该直线进行检查,则还可以减少检查次数

如果我理解正确的话,您的问题不是严格意义上的直线相交(在web上很容易找到),而是如何处理数百条直线相交

也许你应该为你的数据考虑一个空间结构来限制计算。以“四叉树”为例


您将只在所有坐标的子集上测试交点。

您所称的直线,您可以称之为
列表
-直线段列表。如果有
列表a
列表b
,则需要将a中的每一行与b中的每一行进行比较。我假设您可以看到如何找到两条直线段的交点,甚至可以。例如:


现在这段代码不会很快,但可能已经足够快了。如果速度太慢,那么你必须考虑优化——这可以通过多种方式实现,四叉树或一维排序是两个显而易见的简单步骤。

可能有用。不需要太快。我想我会像Rockeye和你自己建议的那样研究四叉树方法。我只是研究了Line2D类。。似乎与android不兼容。很抱歉我有点傻。我只有java.awt.font.*;java.awt中没有其他内容。我是通过在eclipse中编写import语句并让autocomplete向我显示哪些类可以导入而发现这一点的。我在eclipse中运行android,以防万一。对不起,我不应该把它作为java问题发布。这是安卓。
for(Line2D line1 : a) {
   for(Line2D line2 : b) {
      if(a.intersectsLine(b)) {
         return true;
      }
   }
}
return false;