创建椭圆刷图像的算法?

时间:2010-03-14 20:34:38

标签: java algorithm graphics java-2d

我需要能够接受椭圆(计算)画笔参数,例如间距,硬度,圆度,角度和直径,然后根据这些属性计算位图图像。

有人知道这个算法(或我能找到它的地方)吗?我在图形编程方面经验有限,到目前为止我一直找不到它。

2 个答案:

答案 0 :(得分:1)

这是你想要使用库的东西,很可能是Java 2D API。它包括填充,笔触,变换和过滤器的功能。它的模型类似于许多库,因为您使用运算符moveTolineTocurveTo来追踪路径,这些路径以Ellipse2D等形状抽象;然后用paint操作符填充或描边结果路径。我强烈建议您阅读Java 2D教程并了解不同部分如何组合在一起。

我将大致采取以下步骤来创建此绘图:

  • 模糊后计算旋转椭圆的最终尺寸。
  • 创建该大小的BuferredImage并调用其createGraphics方法获取绘图上下文。
    • 旋转图形对象
    • 绘制椭圆
    • 用黑色填充
  • 实施高斯模糊滤镜。这不是内置于API中,但它包含一个用于执行名为ConvolveOp的过滤器的框架,以及一个用于在Java中计算高斯内核的算法。
  • 将过滤器应用于图像,然后返回结果。

另一个选项可能是Apache的you can find SVG库,因为您可以声明性地表达您想要的绘图(包括转换和过滤器)并为您进行栅格化。

答案 1 :(得分:0)

可以在此处找到一个非常有用的椭圆公式列表:http://xahlee.org/SpecialPlaneCurves_dir/Ellipse_dir/ellipse.html

考虑每个公式对位图中单个像素的含义(无论是在椭圆内/外,是否在边缘附近)以及哪些属性对您有用。