使用Java 2D我将几条Bezier曲线(CubicCurve2D
)拼接在一起以创建“blob”。我现在面临的问题是如何:
我注意到CubicCurve2D
实施了Shape
,它提供了许多用于确定“内部性”的contains
种方法,并且Graphics2D
能够通过“{1}}填充Shape
fill(Shape)
(我相信使用Shape
的{{1}}方法来执行此操作。
鉴于此,我希望我可以创建一个复合getPathIterator
,我的Shape
方法只会将基础getPathIterator(AffineTransform)
链接在一起。但是,一旦我的形状包含多个PathIterator
,就会产生NoSuchElementException
。即使我设法实现这一点,我也不相信它会按预期工作,因为CubicCurve2D
总是填充在凸面上,而我的“blob”由凹凸曲线组成。 “包含”问题甚至更难,因为一个点可以合理地位于blob内,但不在任何单个曲线内。
CubicCurve2D
?)或者是否有一种习惯性的方式来做到这一点,我不知道?我原以为合成几何形状的问题会相当普遍。提前致谢。
答案 0 :(得分:3)
我不确定我理解你的问题,但复合形状可以使用班级java/awt/geom/Area创建。
答案 1 :(得分:1)
寻找解决方案的形状是正确的方法。如果你有一组曲线,你试图组装成一个形状,我建议你使用一个GeneralPath。只需根据需要添加曲线或直线段。查看界面以查看各种追加方法。另请注意,您可以通过将最后一个点连接到起点来“完成”形状。
一旦路径关闭,可以使用许多不同版本的contains(),请花时间阅读每个描述,因为在速度和准确性方面需要权衡取决于在你的申请上。
也很容易从路径中获取形状,填充,转换等等。