我使用 Java 2D 将几条贝塞尔曲线 ( CubicCurve2D
) 修补在一起以创建一个“斑点”。我现在面临的问题是如何:
- 用给定的颜色有效地填充斑点。
- 有效地确定给定点是否位于 blob 内。
我注意到 thstCubicCurve2D
实现Shape
了它提供了许多contains
用于确定“内部”的方法,并且Graphics2D
能够Shape
通过fill(Shape)
(我相信使用Shape
的getPathIterator
方法来做到这一点)填充 a。
鉴于此,我希望我可以创建一个组合Shape
,从而我的getPathIterator(AffineTransform)
方法将简单地将底层PathIterator
s 链接在一起。但是,NoSuchElementException
一旦我的形状包含多个CubicCurve2D
. 即使我确实设法实现了这一点,我也不相信它会按预期工作,因为 aCubicCurve2D
总是在凸面填充,而我的“blob”由凹凸曲线组成。“包含”问题更加困难,因为一个点可以合法地位于 blob 内,但不能位于任何单独的曲线内。
- 我是以正确的方式解决这个问题(试图实现
Shape
?)还是有一种我不知道的惯用方式来做到这一点?我原以为合成几何形状的问题会相当普遍。 - 有人对如何解决这个问题有任何建议吗?
提前致谢。