Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我如何判断一组线对象近似于闭合区域?_Java_Android_Math_Computer Science_Computational Geometry - Fatal编程技术网

Java 我如何判断一组线对象近似于闭合区域?

Java 我如何判断一组线对象近似于闭合区域?,java,android,math,computer-science,computational-geometry,Java,Android,Math,Computer Science,Computational Geometry,我正在制作一个绘图应用程序,用户可以删除他们所画的内容 除了回溯他们触摸过的地方之外,我正在尝试找出一种巧妙的方法,那就是擦除他们指定的封闭区域 用户故事将是: 我在其他绘图应用程序中看到过这种情况。数学不是我的专长。我甚至不知道在哪里可以找到这个答案 该应用程序已经能够在位图上绘制线条(),因此从评论中修改的问题判断:“给定一系列线段,每个线段从前面的端点开始,线条是否(大致)形成一个闭合多边形?”这应该不会太难 只需将第一段的头部与最后一段的尾部进行比较。如果它们足够接近,则这些线段大致形成

我正在制作一个绘图应用程序,用户可以删除他们所画的内容

除了回溯他们触摸过的地方之外,我正在尝试找出一种巧妙的方法,那就是擦除他们指定的封闭区域

用户故事将是:

我在其他绘图应用程序中看到过这种情况。数学不是我的专长。我甚至不知道在哪里可以找到这个答案


该应用程序已经能够在位图上绘制线条(),因此从评论中修改的问题判断:“给定一系列线段,每个线段从前面的端点开始,线条是否(大致)形成一个闭合多边形?”这应该不会太难

只需将第一段的头部与最后一段的尾部进行比较。如果它们足够接近,则这些线段大致形成一个闭合(可能自相交)多边形

<> P> >如果你有“代码> N< /代码>由点<代码> Py0,…,pnn<代码>组成的片段,你可以考虑<代码> p00和<代码> pnn之间的欧几里得距离。其思路如下:

if dist(p_0,p_n) < THRESHOLD
    create a new segment [p_n,p_0] closing off the polygon
    delete pixels in the enclosed region
如果距离(p\u 0,p\u n)

dist(pu0,pun)
可以实现为
sqrt((pu0x-punx)^2+(pu0y-puny)^2)
。变量
THRESHOLD
将是一个常数,确定您希望在第一个点和最后一个点之间容忍的误差有多大。

您想要一个闭合圆,还是任何闭合多边形都可以工作?我猜是任何闭合多边形。我从用户那里收集了一组线对象,其中一条线的尾部是另一条线的头部。这些线可以相互交叉吗?或者它们必须只在端点处相交?因此,您对以下内容感兴趣:给定一系列线段,其中每个线段从前面的端点开始,这些线段是否(大致)形成一个闭合多边形?是的!这就是我想说的。。。但是不知道收集线段序列后从何处开始。天哪!我完全可以做到。感谢您和templatetypedef!有点太激动了=(不清楚的是创建[p_n,p_0]后会发生什么)。我想我需要一个与多边形相等的像素数组,这样我就可以迭代并删除它。我如何从封闭的线段图开始,并将其存储为一个区域?我说的有意义吗?从技术上讲,你提供的答案是我发布的问题的答案。但是,正如我前面提到的,它引出了另一个问题。好问题。我知道了将使用洪水填充算法:。如果您在实现这一点上需要帮助,请随意作为另一个问题提问。哇,这太棒了,我一定会研究它。您真的很有帮助。
if dist(p_0,p_n) < THRESHOLD
    create a new segment [p_n,p_0] closing off the polygon
    delete pixels in the enclosed region