在Java2D中创建复合形状
使用Java 2D,我将多条Bezier曲线(在Java2D中创建复合形状,java,algorithm,graphics,java-2d,bezier,Java,Algorithm,Graphics,Java 2d,Bezier,使用Java 2D,我将多条Bezier曲线(CubicCurve2D)拼接在一起,以创建一个“blob”。我现在面临的问题是如何: 用给定的颜色有效地填充斑点 有效地确定给定点是否位于blob内 我注意到thstCubicCurve2D实现了Shape,它提供了许多包含的方法来确定“内部性”,并且Graphics2D能够通过填充(形状)(我相信这是使用Shape的getPathIterator方法来实现的) 考虑到这一点,我希望能够创建一个复合形状,从而使用我的getPathIterator(
CubicCurve2D
)拼接在一起,以创建一个“blob”。我现在面临的问题是如何:
CubicCurve2D
实现了Shape
,它提供了许多包含的方法来确定“内部性”,并且Graphics2D
能够通过填充(形状)
(我相信这是使用Shape
的getPathIterator
方法来实现的)
考虑到这一点,我希望能够创建一个复合形状
,从而使用我的getPathIterator(仿射变换器)
方法将简单地将底层的路径迭代器链接在一起。然而,一旦我的形状包含多个CubicCurve2D
,就会产生一个NoTouchElementException
。即使我成功地实现了这一点,我也不相信它会像预期的那样工作,因为CubicCurve2D
总是被填充到在凸面,我的“blob”由凹曲线和凸曲线组成。“包含”问题更难,因为一个点可以合法地位于blob内,但不在任何单独的曲线内
- 我是以正确的方式处理这个问题(尝试实现
形状
?)还是有一种我不知道的惯用方法来解决这个问题?我本以为合成几何形状的问题会相当普遍
- 有人对如何解决这个问题有什么建议吗
提前感谢。我不确定我是否理解你的问题,但是可以用类创建复合形状。我不确定我理解你的问题,但是可以用类创建复合形状。寻找形状解决方案是正确的方法。如果你有一组曲线,你正在尝试要组合成一个形状,我建议您使用通用路径。只需根据需要添加曲线或直线段。查看界面以查看各种附加方法。还要注意,您可以通过将最后一点连接到起点来“完成”形状
关闭路径后,可以使用多种不同版本的contains(),请花时间阅读它们的每一个描述,因为在速度和准确性方面存在权衡,这取决于您的应用程序
此外,从路径中获取形状、填充形状、变换形状等也很容易。寻找形状解决方案是正确的方法。如果您有一组曲线试图组合成一个形状,我建议您使用通用路径。只需根据需要添加曲线或直线段。Loo请转到界面以查看各种附加方法。还请注意,您可以通过将最后一点连接到起点来“完成”形状
关闭路径后,可以使用多种不同版本的contains(),请花时间阅读它们的每一个描述,因为在速度和准确性方面存在权衡,这取决于您的应用程序
此外,从路径中获取形状、填充形状、变换形状等也很容易。酷-谢谢Pierre!我来看看。酷-谢谢Pierre!我来看看。