有一个 int I 和 number if iterations 和一个函数 DrawPoint(x,y) 如何画一个圆?

发布于 2024-10-09 00:53:15 字数 150 浏览 7 评论 0 原文

所以我们有一个绘制点的函数 DrawPoint(x,y),我们必须绘制一些看起来像圆的点。如何创建这样的 for(i=0; i 来画一个圆?

So we have a function DrawPoint(x,y) that draws a point, we have to draw some number of points that would look like a circle. How to create such for(i=0; i<numberOfIterations; i++) to draw a circle?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无声静候 2024-10-16 00:53:15
// (cx, cy) is the center of the circle
// r is the circle radius
// the smaller the granularity, the better the circle will look
// to draw only numberOfIterations points, granularity 
// should be 2*pi / numberOfIterations

for(i=0; i<2*pi; i+=granularity)    
    DrawPoint(cx + r*sin(i), cy + r*cos(i));
// (cx, cy) is the center of the circle
// r is the circle radius
// the smaller the granularity, the better the circle will look
// to draw only numberOfIterations points, granularity 
// should be 2*pi / numberOfIterations

for(i=0; i<2*pi; i+=granularity)    
    DrawPoint(cx + r*sin(i), cy + r*cos(i));
狼性发作 2024-10-16 00:53:15

获得合适圆的更好算法之一是 Bresenham 圆算法,也称为中点圆算法

直接的基本圆形例程的问题在于,它们往往会产生混叠效应,因此结果看起来不正确,该算法提供了更好的近似值,但并不严格适合您的 for(;;) 循环要求,尽管它仍然是一个迭代循环。

One of the better algorithms for getting a decent circle is the Bresenham's circle algorithm, also called the Midpoint circle algorith.

The problem with the straight forward, basic circle routines is that they tend to have alias effects and not look right as a result, this algorithm gives a better approximation, though does not strictly fit your for(;;) loop requirement, though it is still an iterative loop.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文