在Java2D中创建复合形状

在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(

使用Java 2D,我将多条Bezier曲线(
CubicCurve2D
)拼接在一起,以创建一个“blob”。我现在面临的问题是如何:

  • 用给定的颜色有效地填充斑点
  • 有效地确定给定点是否位于blob内
  • 我注意到thst
    CubicCurve2D
    实现了
    Shape
    ,它提供了许多
    包含的
    方法来确定“内部性”,并且
    Graphics2D
    能够通过
    填充(形状)
    (我相信这是使用
    Shape
    getPathIterator
    方法来实现的)

    考虑到这一点,我希望能够创建一个复合
    形状
    ,从而使用我的
    getPathIterator(仿射变换器)
    方法将简单地将底层的
    路径迭代器链接在一起。然而,一旦我的形状包含多个
    CubicCurve2D
    ,就会产生一个
    NoTouchElementException
    。即使我成功地实现了这一点,我也不相信它会像预期的那样工作,因为
    CubicCurve2D
    总是被填充到在凸面,我的“blob”由凹曲线和凸曲线组成。“包含”问题更难,因为一个点可以合法地位于blob内,但不在任何单独的曲线内

    • 我是以正确的方式处理这个问题(尝试实现
      形状
      ?)还是有一种我不知道的惯用方法来解决这个问题?我本以为合成几何形状的问题会相当普遍
    • 有人对如何解决这个问题有什么建议吗

    提前感谢。

    我不确定我是否理解你的问题,但是可以用类创建复合形状。

    我不确定我理解你的问题,但是可以用类创建复合形状。

    寻找形状解决方案是正确的方法。如果你有一组曲线,你正在尝试要组合成一个形状,我建议您使用通用路径。只需根据需要添加曲线或直线段。查看界面以查看各种附加方法。还要注意,您可以通过将最后一点连接到起点来“完成”形状

    关闭路径后,可以使用多种不同版本的contains(),请花时间阅读它们的每一个描述,因为在速度和准确性方面存在权衡,这取决于您的应用程序


    此外,从路径中获取形状、填充形状、变换形状等也很容易。

    寻找形状解决方案是正确的方法。如果您有一组曲线试图组合成一个形状,我建议您使用通用路径。只需根据需要添加曲线或直线段。Loo请转到界面以查看各种附加方法。还请注意,您可以通过将最后一点连接到起点来“完成”形状

    关闭路径后,可以使用多种不同版本的contains(),请花时间阅读它们的每一个描述,因为在速度和准确性方面存在权衡,这取决于您的应用程序


    此外,从路径中获取形状、填充形状、变换形状等也很容易。

    酷-谢谢Pierre!我来看看。酷-谢谢Pierre!我来看看。