gpt4 book ai didi

algorithm - 绘制一个具有特定像素数的圆

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:46:30 25 4
gpt4 key购买 nike

我正在从事一个项目,该项目要求我准确控制用于绘制(大致)圆形刺激的像素数量,尽管 Bresenham 的算法很棒,但它们不会绘制任意区域的圆圈(以我的知识)。我已经尝试过在绘制所需区域时中断 Bresenham 算法的脚本,但结果显然是命中注定。有谁知道使用给定数量的像素绘制“最佳”圆(我知道有点主观)的方法?非常感谢!

最佳答案

粗略的做法,例如:

面积为 1000 平方像素的圆的半径为 sqrt(1000/pi) = 17.8... 那么该圆应适合 35x35 矩阵。如果为中心像素为 (0,0) 的矩阵创建“索引”,则可以通过代入圆的方程 x^2 + y^2 = r 轻松检查像素是否落在圆中^2。或者,您可以对以 (a,b) 为中心的圆使用替代方程。如果它的计算结果为 TRUE,它就会执行;如果不是,它就在圆圈之外。

作为一个伪代码/示例,在 Python 中我会做一个优化版本:

import numpy, math

target_area = 1000.0

r = (target_area / math.pi) ** 0.5
m = numpy.zeros((2*r+2,2*r+2))

a, b = r, r

for row in range(0, m.shape[0]):
for col in range(0, m.shape[1]):
if (col-a)**2 + (row-b)**2 <= r**2:
m[row,col] = 1

numpy.sum(m)
#>>> 999

这里是目标区域为10万像素时的结果(实际生成的圆为99988.0): circle

您还可以编写一个例程来查找哪些区域可以比其他区域与此算法更匹配,并选择这些值以确保一致性。

关于algorithm - 绘制一个具有特定像素数的圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5748226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com