在Android中从路径创建区域

在Android中从路径创建区域,android,graphics,Android,Graphics,我是一个新的Android开发人员,正在开发一个简单的Tron游戏,使用GPS移动,但是我在实现玩家的交叉方面遇到了困难 现在,我的玩家的轨迹是我移动到坐标的路径,并在画布上画出坐标差作为一条线 path类没有提供我可以找到的交集方法,所以我求助于使用我测试过的交集区域来处理2个常规矩形,但由于某些原因,我无法使用Region.setPath生成一个区域。根据我的理解,路径需要封闭以形成一个区域,以便创建一个区域,而这正是我所需要的 有没有办法在路径之外创建一个区域,而不是路径创建的区域?ie:

我是一个新的Android开发人员,正在开发一个简单的Tron游戏,使用GPS移动,但是我在实现玩家的交叉方面遇到了困难

现在,我的玩家的轨迹是我移动到坐标的路径,并在画布上画出坐标差作为一条线

path类没有提供我可以找到的交集方法,所以我求助于使用我测试过的交集区域来处理2个常规矩形,但由于某些原因,我无法使用Region.setPath生成一个区域。根据我的理解,路径需要封闭以形成一个区域,以便创建一个区域,而这正是我所需要的

有没有办法在路径之外创建一个区域,而不是路径创建的区域?ie:如果路径是一条10px厚的直线,我如何制作一条10px厚的区域

下面是我正在做的一个简短代码示例:

Path p1path = new Path();
p1path.moveTo(startPos,startPos); 
p1path.lineTo(newPos,newPos);
p1path.moveTo(newPos, newPos);
Region p1region = new Region();
p1region.setPath(p1path, new Region(0,0,480,800); // this is where the region isn't setting as I thought it would...

// do same for p2
if(p1.quickReject(p2)) // checks for intersection

谢谢:)

我很久以前就解决了这个问题,但为了帮助那些最终偶然发现这个问题并希望获得类似功能的人:

这篇文章是很久以前的事了,所以让我记住发生了什么

在一条路径周围创建一个区域确实有效,但对于一组非常有限的路径。我所说的“围绕路径创建区域”是指,对于从x1,y1到x2,y2的路径,创建一个覆盖(例如)x1-50,y1-50到x2+50,y2+50的矩形区域,其中50是路径的像素权重笔划

如果你能将其可视化,它基本上会创建一个矩形区域,覆盖路径和它的50px笔划,这样你就可以使用区域“伪造”路径相交。无论路径在哪里,区域在哪里,因此当两条路径“相交”时,您可以检查区域相交(您可以这样做,但我忘记了方法名称)

然而,事实证明,这只适用于少数路径。虽然我认为我的数学能力是足够的,但我无法做到这一点,无论这条路走到哪个方向,这一地区都会奏效。不同的角度、不同的方向等导致该区域未正确绘制在路径下。我上面使用50笔划宽度的例子只适用于特定方向

我和我的搭档偶然发现的解决方案是创建一个映射到屏幕上的2D整数数组。无论路径走向何处,我们都会使用特定值(1)填充路径映射到的每个数组单元。我们将对另一条路径执行相同的操作,但使用不同的值(2)。每次移动时,都会对照路径坐标检查二维阵列,以查看它是否已被占用。有一个重要的数学公式,可以推断当你从x1,y2到x2,y2时访问了哪些细胞,这被证明是非常有用的-我相信它被称为沿Brasenheim公式的东西,或者其他东西

这不是最优雅的解决方案,但它最终伪造了路径交叉点。如果有人对更好的解释感兴趣,你可以给我留言


祝你好运

哦,我现在明白为什么setPath不适合我所做的了。一条简单的直线而不是矩形结构的路径没有面积,因此无法生成区域。我感到困惑,因为我的绘制宽度有一个宽度,并且将绘制的路径与路径本身混淆。我想每次创建路径时,我都会在周围创建一个区域。你能成功吗?嗨,deeJ,请看下面我的答案(该死的600个字符!)