Android:确定Android路径占用的像素数

时间:2011-05-23 17:14:58

标签: android path interpolation

我有一个绘图程序,用户可以用手指跟踪,并以类似于FingerPaint程序的方式绘制一系列Path来表示线条。

现在,我正在进行一些碰撞检测以允许用户进入“擦除”模式并删除所选行,并且我正在尝试确定如何跟踪Path的各个像素。基本上,我正在跟踪包含RectF的{​​{1}},如果Path在处于擦除模式时相交,我还想进行逐像素交叉测试。因此,我需要创建一些用于存储像素的结构,可能是一个二维数组,其中每个元素将是1或0,基于下面的像素是否被绘制的RectF占用。

这是我正在努力的最后一部分。当用户绘制线条时,我通过Path将传递的X / Y值作为控制点提供给二次贝塞尔曲线。问题是虽然Path.quadTo()使用这些点来表示连续线,但我只是从触摸设备接收不连续的X / Y点。本质上,我需要一种方法来复制Path对象本身正在做什么,并采用传递的X / Y点并将其插入到连续曲线中,但是作为一组X / Y坐标而不是{{ 1}}对象......

有什么指示可以开始吗?

由于

EDIT / MORE:

好的,正如我所提到的,每个Path都是使用FingerPaint中的方法创建的(大致),这意味着它是一系列片段,其中每个片段都是二次贝塞尔曲线。鉴于我知道P0,P1和P2,当我将这些曲线段添加到更大的路径时,我可以确定沿着曲线的X / Y坐标:

enter image description here

所以,我现在唯一的问题是确定一组“连续”的相邻X / Y坐标,这样在这个集合中没有用户手指可以通过但没有碰到一个的间隙。这意味着以1个像素间隔确定每个X / Y点。由于上面的公式会产生无穷多个区间的点,给定T值从0到1的任何一个,任何想法如何以编程方式确定将以1个像素间隔产生点的T的正确值?

1 个答案:

答案 0 :(得分:0)

我会使用非曲线或像素进行所有碰撞检测,但只是线条,更容易找到相交线,即用户滑动的两个连续x / y坐标与现有线条的交点