搜索
bottom↓
回复: 12

求:LCD12864上的画圆弧函数

[复制链接]

出590入992汤圆

发表于 2021-11-19 22:28:56 | 显示全部楼层 |阅读模式
128汤圆
如题。
找了几个小时,都是画圆的函数。
需要在LCD12864上画圆弧。
比如:知道圆心,半径,开始和结束角度。画个圆弧。

最佳答案

查看完整内容

我来当个搬运工,这是B站的 这个算法本论坛也有,需要找一下https://blog.csdn.net/hookie1990/article/details/45024049 也可以参照使用Bresenham算法画圆 /*----------------------------------------------------------------------- LCD12864_DrawCircle : LCD12864画圆 输入参数 :(x,y) : 圆点坐标 编写日期 :2019年1月29 ...

出0入143汤圆

发表于 2021-11-19 22:28:57 | 显示全部楼层
本帖最后由 XIE2099 于 2021-11-20 11:32 编辑

我来当个搬运工,这是B站的
这个算法本论坛也有,需要找一下https://blog.csdn.net/hookie1990/article/details/45024049
也可以参照使用Bresenham算法画圆
/*-----------------------------------------------------------------------
LCD12864_DrawCircle             : LCD12864画圆
       
输入参数                                           :(x,y) : 圆点坐标
                                 
编写日期                                :2019年1月29日
最后修改日期                                  :2019年1月29日
-----------------------------------------------------------------------*/
void LCD12864_DrawCircle(int x,int y,int r)
{
        int xc=0;
        int yc,p;
        yc=r;
        p=3-(r<<1);       
        while(xc <= yc)
        {
                LCD12864_DrawPoint(x+xc,y+yc);
                LCD12864_DrawPoint(x+xc,y-yc);       
                LCD12864_DrawPoint(x-xc,y+yc);
                LCD12864_DrawPoint(x-xc,y-yc);
               
                LCD12864_DrawPoint(x+yc,y+xc);       
                LCD12864_DrawPoint(x+yc,y-xc);
                LCD12864_DrawPoint(x-yc,y+xc);
                LCD12864_DrawPoint(x-yc,y-xc);
                if(p<0)
                {
                        p += (xc++ << 2) + 6;       
                }
                else
                        p += ((xc++ - yc--)<<2) + 10;
        }
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2021-11-20 07:15:28 来自手机 | 显示全部楼层
中学数学知识够写函数吧

出30入16汤圆

发表于 2021-11-20 08:50:43 来自手机 | 显示全部楼层
本帖最后由 洞洞幺 于 2021-11-20 10:21 编辑

可以网上下个例程,一般画四分之一个就好了,对称的。

出30入16汤圆

发表于 2021-11-20 08:52:34 来自手机 | 显示全部楼层
本帖最后由 洞洞幺 于 2021-11-20 08:54 编辑
NJ8888 发表于 2021-11-20 07:15
中学数学知识够写函数吧


有了中学知识,一般人还真的写不出一个简单的画斜线的函数,不信你试试。除了点流水灯,照着说明书写个程序等等之外,单片机开发并不是简单的活,门槛还真的挺高的。

出10入120汤圆

发表于 2021-11-20 10:38:37 | 显示全部楼层
洞洞幺 发表于 2021-11-20 08:52
有了中学知识,一般人还真的写不出一个简单的画斜线的函数,不信你试试。除了点流水灯,照着说明书写个程 ...

有了打点的函数,其他不就是初中数学的事了吗,做控制这点问题搞不定那改行好了

出0入362汤圆

发表于 2021-11-20 10:40:19 | 显示全部楼层
本帖最后由 tomzbj 于 2021-11-20 10:45 编辑
洞洞幺 发表于 2021-11-20 08:50
可以网上下个例程,一般画四分之一个就好了,对称的。


都是画1/8吧, 一次画四条, 上下, 左右对称, 然后交换xy轴再画四条, 这样运算量最少.

斜线也得判断一下, 和水平线的夹角是否大于45度, 如果大了, 交换xy再画.

总之随便买本计算机图形学, 里面都有.

出30入16汤圆

发表于 2021-11-20 11:52:39 来自手机 | 显示全部楼层
本帖最后由 洞洞幺 于 2021-11-20 12:50 编辑
makesoft 发表于 2021-11-20 10:38
有了打点的函数,其他不就是初中数学的事了吗,做控制这点问题搞不定那改行好了 ...


你很聪明!

出590入992汤圆

 楼主| 发表于 2021-11-20 12:58:11 | 显示全部楼层

怎么改了回复了。
我替你回复吧。
用初中的算法的确可以解决问题,但是不是解决问题的最好方法。画个直线都有所谓的“Bresenham画线算法"。
而且肯定有画圆弧的优化算法,我自知自己写肯定不现实,而且网上也没有找到,所以需要求个算法。

出590入992汤圆

 楼主| 发表于 2021-11-20 13:06:29 | 显示全部楼层
tomzbj 发表于 2021-11-20 10:40
都是画1/8吧, 一次画四条, 上下, 左右对称, 然后交换xy轴再画四条, 这样运算量最少.

斜线也得判断一下,  ...

谢谢,我怎么没想到买书呢,刚刚下单了一本《计算机图形学基础教程》
看目录里面都有详细的介绍。

出0入0汤圆

发表于 2021-11-20 13:59:42 | 显示全部楼层
tomzbj 发表于 2021-11-20 10:40
都是画1/8吧, 一次画四条, 上下, 左右对称, 然后交换xy轴再画四条, 这样运算量最少.

斜线也得判断一下,  ...

好方法            

出30入16汤圆

发表于 2021-11-20 15:06:31 来自手机 | 显示全部楼层
本帖最后由 洞洞幺 于 2021-11-20 18:10 编辑
SUPER_CRJ 发表于 2021-11-20 12:58
怎么改了回复了。 。
我替你回复吧。
用初中的算法的确可以解决问题,但是不是解决问题的最好方法 ...


免得有说教的嫌疑。

出10入120汤圆

发表于 2021-11-20 15:31:01 | 显示全部楼层
SUPER_CRJ 发表于 2021-11-20 12:58
怎么改了回复了。 。
我替你回复吧。
用初中的算法的确可以解决问题,但是不是解决问题的最好方法 ...

谢谢,了解了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 08:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表