【问题标题】:Circle and ellipse rasterization algorithm圆形和椭圆光栅化算法
【发布时间】:2017-05-04 19:57:10
【问题描述】:

在我的项目中,我需要实现圆形和椭圆光栅化(如果可能,在 C++ 或汇编 + SIMD 中)。我知道中点圆算法和布雷森汉姆圆算法。但是这些算法使用整数值(中心 x、中心 y 和半径)。在我的情况下,半径和中心必须以浮点格式(或至少是定点)表示。而且半径也可以小于1px。所以我需要一种适用于浮点值的算法。有人可以帮帮我吗?

【问题讨论】:

  • 即使您的坐标以浮点格式表示,您也可以将任何浮点数四舍五入为整数。此外,光栅化意味着您正在使用整数(将矢量图像转换为像素)。您可以将浮点数四舍五入为整数。
  • 为什么是浮点数?你能访问 0.152 个像素吗?
  • 我想如果有人谈论字体平滑之类的东西,可能会讨论 0.152 个像素。但我怀疑就是这样。
  • 我正在开发一款适用于 Android 的绘图应用程序。我需要沿着贝塞尔曲线绘制许多质量非常好的圆圈。
  • 如果你已经有了绘制贝塞尔曲线的算法,你可以用贝塞尔曲线很好地近似圆形和椭圆:stackoverflow.com/questions/1734745/…

标签: c++ algorithm geometry rasterizing


【解决方案1】:

根据维基百科的Bresenham's algorithm,它被认为是在屏幕的像素上画一个圆圈。

这就是为什么您可以基于浮点数计算圆的原因,将中心放在任何非整数位置,任何非整数半径,您的圆将被精确绘制到整数像素位置。

【讨论】:

    猜你喜欢
    • 2012-02-11
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 2017-04-07
    • 2016-07-02
    • 1970-01-01
    相关资源
    最近更新 更多