Java2D - morph/interpolate 两个形状
Java2D - morph/interpolate two Shapes
是否有某种方法(库或算法)可用于在 java.awt.Shape
或其路径迭代器的两个实例之间进行插值?例如,要在矩形和椭圆之间无缝过渡?或者更一般的情况 Path2D
.
SwingX项目中有classMorphing2D
。然而,我的初步测试表明,它仅限于不包含 SEG_MOVETO
元素的形状,而且它不会在两个形状之间进行任何奇特的对齐,因此过渡并不总是理想的。
有一个软件 ReportMill 包含 Morphing2D。经过调查,该公司非法复制原始 SwingX 代码并将其粘贴到他们的闭源专有产品中。 (LGPL 违规已提交给 GNU)
我发现 an example 的 JavaFX 似乎支持移动到命令。这可能已包含在 JFX 1.x 中,但似乎不是 JFX 2.x 的一部分。在内部,使用了与 com.sun.javafx.geom.*
之间的翻译,似乎与标准 java.awt.geom.*
有 98% 的兼容性,因此改编很容易。
编辑: My backport 从 JFX 到 Java2D 有效。
是否有某种方法(库或算法)可用于在 java.awt.Shape
或其路径迭代器的两个实例之间进行插值?例如,要在矩形和椭圆之间无缝过渡?或者更一般的情况 Path2D
.
SwingX项目中有class
Morphing2D
。然而,我的初步测试表明,它仅限于不包含SEG_MOVETO
元素的形状,而且它不会在两个形状之间进行任何奇特的对齐,因此过渡并不总是理想的。有一个软件 ReportMill 包含 Morphing2D。经过调查,该公司非法复制原始 SwingX 代码并将其粘贴到他们的闭源专有产品中。 (LGPL 违规已提交给 GNU)
我发现 an example 的 JavaFX 似乎支持移动到命令。这可能已包含在 JFX 1.x 中,但似乎不是 JFX 2.x 的一部分。在内部,使用了与
com.sun.javafx.geom.*
之间的翻译,似乎与标准java.awt.geom.*
有 98% 的兼容性,因此改编很容易。
编辑: My backport 从 JFX 到 Java2D 有效。