单片机 LCD C语言画弧线的程序,谁会?

时间:2021-09-27 19:49:47
C语言画 弧线的程序,谁会? 不要带大量重复sin或者cos的,那样会很慢。下面画圆的程序可以改成画弧形的程序吗?
大侠们,出手吧!


提供一个画圆的程序:

1. view sourceprint?  
2.  // 八对称性    
3.   
4. inline void _draw_circle_8(IMAGE *img, int xc, int yc, int x, int y, unsigned long c)   
5. {    
6.     // 参数 c 为颜色值    
7.     putpixel(img, xc + x, yc + y, c);    
8.     putpixel(img, xc - x, yc + y, c);    
9.     putpixel(img, xc + x, yc - y, c);   
10.     putpixel(img, xc - x, yc - y, c);    
11.     putpixel(img, xc + y, yc + x, c);   
12.     putpixel(img, xc - y, yc + x, c);    
13.     putpixel(img, xc + y, yc - x, c);    
14.     putpixel(img, xc - y, yc - x, c);    
15. }       
16.   
17.  //Bresenham's circle algorithm    
18. void draw_circle(IMAGE *img, int xc, int yc, int r, int fill, unsigned long c)  
19. {    
20.     // (xc, yc) 为圆心,r 为半径    
21.     // fill 为是否填充    
22.     // c 为颜色值       
23.     // 如果圆在图片可见区域外,直接退出    
24.   
25.     if(xc + r < 0 || xc - r >= img->w || yc + r < 0 || yc - r >= img->h)   
26.     {  
27.         return;  
28.     }  
29.   
30.     int x = 0, y = r, yi, d;    
31.         d = 3 - 2 * r;    
32.   
33.     if(fill)  
34.     {    
35.         // 如果填充(画实心圆)    
36.         while(x <= y)   
37.         {    
38.             for(yi = x; yi <= y; yi ++)    
39.             {  
40.                 _draw_circle_8(img, xc, yc, x, yi, c);    
41.             }  
42.             if(d < 0)   
43.             {    
44.                 d = d + 4 * x + 6;    
45.             }   
46.             else   
47.             {    
48.                 d = d + 4 * (x - y) + ;    
49.                 y --;    
50.             }    
51.   
52.             x++;    
53.         }    
54.     }   
55.     else   
56.     {    
57.         // 如果不填充(画空心圆)    
58.         while (x <= y)   
59.         {    
60.             _draw_circle_8(img, xc, yc, x, y, c);    
61.   
62.             if(d < 0)   
63.             {    
64.                 d = d + 4 * x + 6;    
65.             }   
66.             else   
67.             {    
68.                 d = d + 4 * (x - y) + ;    
69.                 y --;    
70.             }    
71.   
72.             x ++;    
73.         }    
74.     }    
75. }   

5 个解决方案

#1


很简单哦

#2


加上圆弧的起点和终点就可以了

#3


有固定的算法

#4


看来没人会,算了结题吧。有人有现成的算法的话 希望能够发给我260079139@qq.com

#5


可以到智能车吧看我的精华帖。。。

#1


很简单哦

#2


加上圆弧的起点和终点就可以了

#3


有固定的算法

#4


看来没人会,算了结题吧。有人有现成的算法的话 希望能够发给我260079139@qq.com

#5


可以到智能车吧看我的精华帖。。。