问题标签 [path-iterator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
8866 浏览

java - 使用 PathIterator 返回所有约束区域的线段?

在 Java 中,如何使用PathIterator来遍历约束Area? 仅受Area线约束(但曲线支撑不会受到伤害)。

该方法应返回所有线段的集合。

0 投票
1 回答
1990 浏览

java - 如何使用 GeneralPath 检查形状相交?爪哇

我有一个程序可以让你移动各种形状。如果两个形状相交,我希望能够返回一个返回 true 的布尔值。这是我迄今为止所拥有的:

...其中 path 是 GeneralPath(这些都直接来自 API,MyShape 除外)。

我不确定的一件事是 PathIterator 如何工作,这可能是问题所在。我也试过这个,但我遇到了类似的错误:

错误是此方法几乎总是返回 false。我不确定它何时/为什么返回真实,但这种情况很少见。

0 投票
1 回答
2744 浏览

java - Java PathIterator 顺时针还是逆时针?

Java PathIterator 是否以顺时针或逆时针顺序为您提供多边形的点?

0 投票
1 回答
233 浏览

java - 无法弄清楚 PathIterator 中 flattnes 参数的作用?

我正在编写自己的PathIterator实现。

目前,我实现了具有平坦度和平坦度的方法:

即我忽略它。

使用flatness参数的最简单方法是什么?

我当前的迭代器给出了一系列平行的垂直线(之间没有连接)。对我来说,实现平面感知版本的迭代器有多重要?它在哪里使用?

0 投票
0 回答
523 浏览

java - Java PathIterator - 如何找到一个区域的正确周长?

前提

我正在随机生成一个二维迷宫状结构。归结为在网格中随机生成一堆房间,然后使用 A* 将这些房间与走廊随机连接。房间的墙壁在网格中占据了整个正方形。我遇到的问题是这些墙的创建。

为了决定将随机生成的房间放在哪里,我开始将网格划分为一堆大小不一的矩形单元格,这些单元格彼此相邻,使用大小为 1 的单元格来填充它们之间的剩余间隙。之后,我随机选择一堆这些单元格作为房间。如果任何选定的单元格彼此相邻,则将它们组合成一个房间。到目前为止,该算法运行良好。

例子

细胞基因

问题

我遇到的问题是,当我想遍历定义其中一个房间墙壁的每个正方形时。现在发生的事情是,我为每个房间创建一个区域,并将所需的每个单元格添加到该房间的区域。我成功地使用PathIterator来遍历区域的轮廓。唯一的问题是该迭代器的结果不是我想要的结果。

例如,假设一个具有坐标 (5, 5) 和大小 (4, 6) 的矩形。我想要迭代的结果点如下:

  • 第 1 行从 (5, 5) 到 (8, 5)
  • 线路 2 从 (8, 5) 到 (8, 10)
  • 第 3 行从 (8, 10) 到 (5, 10)
  • 第 4 行从 (5, 10) 到 (5, 5)

相反,我最终得到以下结果:

  • 线路 1 从 (5, 5) 到 (9, 5)
  • 线路 2 从 (9, 5) 到 (9, 11)
  • 3号线从 (9, 11) 到 (5, 11)
  • 第 4 行从 (5, 11) 到 (5, 5)

换句话说,可以认为是在区域内部上方左侧的每一行都包含在区域内,而考虑到区域下方右侧的每一行都是区域独有的(如由Area.contains函数返回)。

现在在处理简单的正方形时修复这个问题似乎微不足道,但是一旦我开始尝试为一个区域修复这个问题,各种烦人的特殊情况开始从我尝试修复它的每个角度弹出。

我尝试或考虑过的一些东西:

  • 格雷厄姆的扫描算法。当我意识到“凸壳”是什么意思以及我的房间不是那样时,我失败了
  • 考虑路径中的每一行,检查它是否主要在区域内部或外部,如果在外部,则将其移动一个单位。尝试使用尽可能小的行(长度 2 - 3)执行时失败
  • 考虑路径中每组连续的 3 个点,检查它们形成的角类型(什么方向 + 是凹角还是凸角),然后根据角的类型调整这三个点的中间。失败,因为我似乎找不到一种可靠的方法来检查这些点构成的角

所以我想知道,这里有什么明显的我完全想念的吗?这是我无法使用 PathIterator 完成的事情,我需要实现自己的“多边形创建”算法吗?如果是这样,那里有类似的东西吗?这几天我一直在为这件事绞尽脑汁。我似乎也无法在互联网上找到任何帮助。


好吧,我只是想到了一些非常明显的事情,我对我试图制作它的复杂程度感到有点羞愧。我想我只是在这个问题上盲目地盯着自己看。

  • 迭代边界矩形的所有点
  • 如果多边形包含该点,则在每个方向创建该点的翻译版本。
  • 如果多边形不包含平移点之一,则表示该点是多边形墙的一部分。

这是一个令人难以置信的明显和简单的机制,这意味着至少我现在被保存了,但它显然非常低效,所以如果有人有更好的算法,仍然非常受欢迎!

0 投票
3 回答
1951 浏览

java - Java PathIterator - 如何准确计算 Shape 对象的中心?

我正在尝试使用 PathIterator 来计算任何 Shape 对象的中心,以便可以计算弯曲路径,但是在找到标准 1x1 矩形的中心后,我的 getCenter() 方法会返回该点:

我的 getCenter() 方法:

我发现在打印 points.toString() 时,我在控制台中得到了这个:

我注意到点数组中有六个条目,而不是我期望的四个,因为输入的 Shape 对象是 Rectangle2D.Double(0, 0, 1, 1)。显然,它对点 (0, 0) 的解释比我想要的多两倍,我对为什么会这样感到困惑。它是 PathIterator.isDone() 方法的结果吗?我使用不正确吗?如果 PathIterator 不能解决我的问题怎么办?

0 投票
0 回答
54 浏览

php - 如何计算 PHP 中一组路径和符号链接的最小公分母?

我得到了一个路径数组(结合了默认和用户设置),需要对一些数据文件执行递归搜索,这些数据文件可以隐藏在任何这些路径中的数万个文件之间。

我用 a 进行递归搜索,RecursiveDirectoryIterator但速度很慢,建议的替代exec("find")方法甚至更慢。为了节省时间、I/O 和处理能力,我想预先进行一些预处理以避免多次搜索目录树并计算给定路径的最小公分母。我将不胜感激有关如何执行此操作的任何建议。

问题是,任何给定的路径可能不仅是其他路径的祖先,或者只是相互符号链接,而且可能作为真实路径或符号链接的路径给出。至少有人可能会假设不会有任何循环符号链接(尽管检查不会是坏事)。

我需要在 PHP 中实现它,并且我草拟了以下代码,它还没有涵盖所有情况。

这段代码的不足之处:想象一下这些路径$search_paths

作为 .的/e/f/g/d符号链接/a/b/c/d

上面的代码将留下这两个:

但搜索/e/f实际上就足够了,因为它/a/b/c/d通过 symlink覆盖/e/f/g/d。这听起来像是一个边缘案例,但实际上在我的情况下很有可能。

棘手,是吗?

我很确定我不是唯一一个遇到这个问题的人,但我无法使用谷歌找到解决方案。也许我只是没有得到正确的措辞来解决这个问题。

感谢您阅读到这里!:)

0 投票
0 回答
186 浏览

java - Java在TextLayout中检索文本的简单坐标

我有一个检索字符串形状的函数:

一旦我得到一个字符串的 Shape 对象,我想要可以用来绘制字符串的坐标:

问题是点 ArrayList 是遍历字符串边界的点。有没有办法只使用简单的单线段来获取绘制字符串的坐标?不是构成字符串轮廓的坐标。

0 投票
1 回答
578 浏览

java - PathIterator 类型中的方法 currentSegment(float[]) 不适用于参数 (Double[])

我正在尝试在 java 程序中读取 Path2D.Double 的段,而 Eclips 不断告诉我:

PathIterator 类型中的方法 currentSegment(float[]) 不适用于参数 (Double[])

但是在接口 PathIterator 中,有 2 种方法似乎让 Eclipse(或我)感到困惑

我自己的代码如下:

线与

标记为红色,工具提示显示:

PathIterator 类型中的方法 currentSegment(float[]) 不适用于参数 (Double[])

有一个带有 float[] 的方法和另一个带有 double[] 但名称相同的方法我在这里想念什么?

0 投票
1 回答
135 浏览

java - java.awt.Rectangle 的 PathIterator 总是给出 (0,0)

在我的代码中,我创建了一个java.awt.Rectangle带有角和长度和宽度的实例。然后我对其应用旋转仿射变换(at) 以将其旋转一定角度。

然后我获取矩形的 PathIterator 并将几何迭代为:

虽然我预计 4 分(或 5 分,因为第一个和最后一个可能相同),但我得到的是 6 分。更令人惊讶的是,最后一点总是(0,0)。(0,0) 不是矩形几何的一部分,但我仍然总是得到它。这种行为背后的原因是什么?