algorithm - 快速嵌套在矩阵中绘制圆

标签 algorithm math optimization geometry

假设我有一个 NxN 矩阵,其中每个单元格都是一个 1x1 的白色正方形。

假设我有一个位置 P 和一个半径 R。我想绘制以 P 为中心、半径为 R 的圆的所有单元格。

我当然可以这样做:

for(int i = P.x - R; i < P.x + R; i++)
    for(int j = P.y - R; j < P.y + R; j++)
        if (distance from P to (i,j) < R)
            Paint(i,j)

但是,由于我将在将执行每一帧的着色器上运行此代码,因此我想知道一种更快的方法来找到正确的单元格,而不是询问每个单元格的距离,这样很慢。

有更聪明的方法吗?

最佳答案

您可以为圆的每个给定高度计算其线段宽度并将其完全填充。

您将从 y = P - R 到 P + R 填充弦(圆弧段)中的所有点。

对于弦的长度,只需使用 here 中的公式 (9) .

关于algorithm - 快速嵌套在矩阵中绘制圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64213136/

相关文章:

arrays - 找到所有连续子数组的最大差的和(S)的最佳方法

java - 插入排序,比较次数

algorithm - 从全黑红黑树中删除节点

python - 计算四边形的面积

mysql - SQL查询以获取设定时间段的平均值

javascript - 在这种情况下,扩展原型(prototype)链如何提高性能?

php - 对组合发电机的建议

c++ - 铁路路线的数据结构

c++ - 问题19欧拉计数星期日项目

c++ - 如何加速返回指向 C++ 对象指针的函数?