如何解决是否有比在方程x ^ 2 + y ^ 2 = r ^ 2中尝试点更好的在圆上生成点的方法?
我见过许多绘制圆圈的应用程序,例如python的pygame,javascript的p5.js。但是我找不到有效地找出圆上点的方法。我目前对这个问题的解决方案涉及尝试在正方形上可以刻有圆圈的所有数字。
这不是最有效的方法。在行业级别使用什么方法?它涉及优化还是一种全新的方法?
解决方法
可以使用Midpoint Circle Algorithm。
和一个实现,例如在rosettacode.org的C
中:
#define plot(x,y) put_pixel_clip(img,x,y,r,g,b)
void raster_circle(
image img,unsigned int x0,unsigned int y0,unsigned int radius,color_component r,color_component g,color_component b )
{
int f = 1 - radius;
int ddF_x = 0;
int ddF_y = -2 * radius;
int x = 0;
int y = radius;
plot(x0,y0 + radius);
plot(x0,y0 - radius);
plot(x0 + radius,y0);
plot(x0 - radius,y0);
while(x < y)
{
if(f >= 0)
{
y--;
ddF_y += 2;
f += ddF_y;
}
x++;
ddF_x += 2;
f += ddF_x + 1;
plot(x0 + x,y0 + y);
plot(x0 - x,y0 + y);
plot(x0 + x,y0 - y);
plot(x0 - x,y0 - y);
plot(x0 + y,y0 + x);
plot(x0 - y,y0 + x);
plot(x0 + y,y0 - x);
plot(x0 - y,y0 - x);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。