欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3255|回復: 7
收起左側

請教單片機+LCD12864畫斜線的問題

[復制鏈接]
ID:723137 發表于 2020-4-23 23:27 | 顯示全部樓層 |閱讀模式
設定兩個坐標點(X0,Y0),(X1,Y1),畫一條斜線。
斜線方程為Y=aX+b,根據兩個坐標點求出a,b
用for,從X0到X1循環,根據方程計算Y0到Y1,得出若干個點的坐標,然后通過坐標描點,怎么畫出來是一條直線呢?
部分代碼如下:

void Drawline(uchar X0, uchar Y0, uchar X1 ,uchar Y1, uchar Color)//畫斜線
{

    int  a, b ;
    uchar incx, incy ;
        ////////////////////////
        if(X0>X1)
        {
          incx=X0;
          X0=X1;
          X1=incx;
          incy=Y0;
          Y0=Y1;
          Y1=incy;           
        }
        a=(Y0-Y1)/(X0-X1);
        b=Y0-a*X0;

        for(;X0<X1+1;X0++)
        {
          Y0=a*X0+b;
          Draw_dots( X0, Y0, Color ) ;
        }
        
}

回復

使用道具 舉報

ID:282850 發表于 2020-4-24 01:06 | 顯示全部樓層
沒看見調用參數,要確保兩點是斜線的。估計另外還有一個程序問題,暫不好定論。
回復

使用道具 舉報

ID:283908 發表于 2020-4-24 05:55 | 顯示全部樓層
把調用void Drawline( 參數)//畫斜線,發出來看看。
回復

使用道具 舉報

ID:219796 發表于 2020-4-24 07:28 來自觸屏版 | 顯示全部樓層
斜率有正有負,你第一步就沒必要了。你的x0,y0必然是整數,應該要來個取整的吧,最好的辦法打開調試,取值試,看各個參數變化
回復

使用道具 舉報

ID:89515 發表于 2020-4-24 07:30 來自觸屏版 | 顯示全部樓層
這個沒那么簡單,不能完全用數學思維去寫。還得考慮屏幕本身的原理,怎么取合適的近似點。百度斜線算法!!!
回復

使用道具 舉報

ID:648281 發表于 2020-4-24 08:54 | 顯示全部樓層
你好!對于點陣液晶來說斜線繪制,本身就是個難題;
由點成線,首先需要明白繪制的原理,然后再去調試;
給你看一個繪制的實例:
001.jpg




回復

使用道具 舉報

ID:592807 發表于 2020-4-24 13:15 | 顯示全部樓層
做個假設,你的兩個坐標是(0,0)和(10,9)那你的a = 0.9,b = 0,那你的原的坐標就0

0 0
1 0.9
2 1.8
3 2.7
你確定0.9 1.8 2.7這些位置有像素點嗎?
回復

使用道具 舉報

ID:282850 發表于 2020-4-24 17:23 | 顯示全部樓層
再看了一下,你用int,沒有用float。可以用int,但注意
a=(Y0-Y1)/(X0-X1);  a是多少?
2/3是0
5/4是1
3/2=1,不是1.5
畫12864每次的增量是一個點,x或y方向上的,經你這個誤差完全就可能沒有增量了。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表