2 Java GeneralPath之间的带状线

时间:2013-02-03 13:11:26

标签: java geometry computational-geometry

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

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

以下情况:

我有2个GeneralPath A&乙

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& A之间没有交集。 B和GeneralPath了,A没有任何积分 匹配GeneralPath B的任何点。

enter image description here

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

我的例子被简化以便更好地解释。我的GeneralPath A& B还可以包含Beziercurves和Cubeto:

enter image description here

此致 安德烈亚斯

1 个答案:

答案 0 :(得分:0)

我怀疑你会得到一个理想的答案,所以我首先给你一些tipp来限制你的任务的复杂性:

我会将你的任务减少到所谓的简单多边形。这是非自相交的多边形。一旦有效,你可以尝试扩展到bezier路径 为了完成一个通用路径的任务,这是非常有害的(这是一个硕士论文,你有6个月的工作时间,或一个客户愿意支付的CAD系统?)

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

然后谁做减法?准备好了吗?减法有哪些限制(简单多边形与非简单多边形)

一种可能性

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

另一种解决方案:

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

为所有新点做到这一点,最后你得到一个条纹列表,可能你需要通过删除重复行进行清理。