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

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

以下情况:

我有2个GeneralPath 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的任何点。



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

我的示例经过简化以更好地解释。我的GeneralPath A和B还可以包含带有Cubeto的Beziercurves:



问候
安德烈亚斯

最佳答案

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

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

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

那谁减去呢?准备好了吗?减法的局限性(简单多边形与非简单多边形)

一种可能性:

获取减法的源代码,尝试理解并扩展执行裁切的部分,以使其返回附加的条纹路径。

另一个解决方案:

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

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

10-04 21:05