java - 2 个 Java GeneralPath 之间的带状线

标签 java geometry computational-geometry

任何人都可以给我提示或帮助我解决以下(希望也很有趣:-))问题。

我的 JavaProgramm 中有 2 个 GeneralPath,我想找出它们之间的带状线。

以下情况:

我有 2 个通用路径 A 和 B

A 是一个带有 3 个点的黄色三角形( moveto、lineto、lineto 、 close )

B(红色)是一个三角形,是 B-A 相减的结果:

B = new Area(gp_B); // General path B area object
A = new Area(gp_A); // General path A area object
B.subtract(A);

B相减后有4分。因此 A 和 B 与 GeneralPath 之间不再有交集,并且 A 没有任何点 匹配 GeneralPath B 的任何点。

enter image description here

如何找出它们之间的带状线?

为了更好地解释,我的示例被简化了。我的 GeneralPath A 和 B 还可以包含带有 Cubeto 的贝塞尔曲线:

enter image description here

问候 安德烈亚斯

最佳答案

我怀疑您是否会得到想要的答案,因此我首先给您一些提示来限制您任务的复杂性:

我会将您的任务简化为所谓的简单多边形。那是非自相交的多边形。一旦有效,您可以尝试扩展到贝塞尔路径。
要完成一般路径的任务,这是非常困难的(这是一篇需要 6 个月时间完成工作的硕士论文,还是一个客户愿意付费的 CAD 系统?)

如果您仍然想这样做:
开始手绘最复杂的场景:完全重叠(如木十字架)。

那谁来做减法呢?准备好工作了吗?减法有哪些限制(简单多边形与非简单多边形)

一种可能性:

获取减法的源代码,尝试理解并扩展执行切割的部分,以便它返回一个额外的条纹路径。

另一种解决方案:

A1:将旧物体与切割后的点进行比较。确定新引入的点。沿着路径上的一点前进,直到到达旧点。从另一个方向也这样做。连接两个方向。

对所有新点执行此操作,最后您会得到一个条纹列表,可能您必须通过删除重复行来进行清理。

关于java - 2 个 Java GeneralPath 之间的带状线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14672826/

相关文章:

random - 如何让这组圆出现在平行四边形的边界内?

opencv - 从 OpenCV 中的 SolvPnP 函数获取相机姿态估计的正确 rvec 和 tvec

r - R中两个向量之间的角度

javascript - 多边形自交检验的数值精度

java - Libgdx 角色运行动画未显示

java - 如何阻止 java.net.http.HttpClient 发出升级请求?

java - Struts2:如何告诉我的 index.jsp 转发到 struts2 操作?

将多边形转换为三角形

c++ - 如何使用 C++ 和 OpenCV 检测轮廓自相交?

java - SWT FileDialog 中的 PathMustExists 和 FileMustExists