本文來源電子發(fā)燒友社區(qū),作者:李先生, 帖子地址:https://bbs.elecfans.com/jishu_2307400_1_1.html
前言
話說沒有藝術(shù)細胞的程序員不是好碼農(nóng)!
上一次我們進行了LCD的刷屏測試,我們覺得太單調(diào)了,程序員就應(yīng)該玩點有藝術(shù)性的。這次我們使用LCD點陣畫出各類具有藝術(shù)性的圖像。
參見https://codegolf.stackexchange.com/
代碼
有用到浮點算數(shù)運算,需要包含算術(shù)庫
#include
代碼如下
//圖片尺寸:
#define DIM 130
//圖片尺寸-1
#define DM1 (DIM-1)
#define _sq(x) ((x)*(x)) // 平方
#define _cb(x) abs((x)*(x)*(x)) // 立方的絕對值
#define _cr(x) (unsigned short)(pow((x),1.0/3.0)) // 立方根
unsigned char RD(int i,int j){
return (char)(_sq(cos(atan2(j-65,i-65)/2))*255);
}
unsigned char GR(int i,int j){
return (char)(_sq(cos(atan2(j-65,i-65)/2-2*acos(-1)/3))*255);
}
unsigned char BL(int i,int j){
return (char)(_sq(cos(atan2(j-65,i-65)/2+2*acos(-1)/3))*255);
}
unsigned char RD0(int i,int j)
{
float s=3./(j+99);
float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;
return ((int)((i+DIM)*s+y)%2+(int)((DIM*2-i)*s+y)%2)*127;
}
unsigned char GR0(int i,int j){
float s=3./(j+99);
float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;
return ((int)(5*((i+DIM)*s+y))%2+(int)(5*((DIM*2-i)*s+y))%2)*127;
}
unsigned char BL0(int i,int j){
float s=3./(j+99);
float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;
return ((int)(29*((i+DIM)*s+y))%2+(int)(29*((DIM*2-i)*s+y))%2)*127;
}
unsigned char RD1(int i, int j) {
#define r(n)(rand()%n)
static char c[DIM][DIM]; return!c[i][j] ? c[i][j] = !r(999) ? r(256) : RD((i + r(2)) % 1024, (j + r(2)) % 1024) : c[i][j];
}
unsigned char GR1(int i, int j) {
static char c[DIM][DIM]; return!c[i][j] ? c[i][j] = !r(999) ? r(256) : GR((i + r(2)) % 1024, (j + r(2)) % 1024) : c[i][j];
}
unsigned char BL1(int i, int j) {
static char c[DIM][DIM]; return!c[i][j] ? c[i][j] = !r(999) ? r(256) : BL((i + r(2)) % 1024, (j + r(2)) % 1024) : c[i][j];
}
unsigned char RD2(int i, int j) {
static double k; k += rand() / 1. / 0x7FFF; int l = k; l %= 512; return l > 255 ? 511 - l : l;
}
unsigned char GR2(int i, int j) {
static double k; k += rand() / 1. / 0x7FFF; int l = k; l %= 512; return l > 255 ? 511 - l : l;
}
unsigned char BL2(int i, int j) {
static double k; k += rand() / 1. / 0x7FFF; int l = k; l %= 512; return l > 255 ? 511 - l : l;
}
unsigned char RD3(int i, int j) {
return (unsigned char)sqrt((double)(_sq(i - DIM / 2) * _sq(j - DIM / 2)) * 2.0);
}
unsigned char GR3(int i, int j) {
return (unsigned char)sqrt((double)(
(_sq(i - DIM / 2) | _sq(j - DIM / 2)) *
(_sq(i - DIM / 2) & _sq(j - DIM / 2))
));
}
unsigned char BL3(int i, int j) {
return (unsigned char)sqrt((double)(_sq(i - DIM / 2) & _sq(j - DIM / 2)) * 2.0);
}
unsigned char RD4(int i, int j) {
static int r[DIM]; int p = rand() % 9 - 4; r[i] = i & r[i] ? (r[i] + r[i - 1]) / 2 : i ? r[i - 1] : 512; r[i] += r[i] + p > 0 ? p : 0; return r[i] ? r[i] < DIM ? r[i] : DM1 : 0;
}
unsigned char GR4(int i, int j) {
static int r[DIM]; int p = rand() % 7 - 3; r[i] = i & r[i] ? (r[i] + r[i - 1]) / 2 : i ? r[i - 1] : 512; r[i] += r[i] + p > 0 ? p : 0; return r[i] ? r[i] < DIM ? r[i] : DM1 : 0;
}
unsigned char BL4(int i, int j) {
static int r[DIM]; int p = rand() % 15 - 7; r[i] = i & r[i] ? (r[i] + r[i - 1]) / 2 : i ? r[i - 1] : 512; r[i] += r[i] + p > 0 ? p : 0; return r[i] ? r[i] < DIM ? r[i] : DM1 : 0;
}
void StartHdfSPITest(void)
{
static uint16_t gcolor = 0xFFFF;
LcdInit();
while (1) {
for(int i=0;ifor(int j=0;jstatic unsigned short color[3];
color[0] = RD(i,j)&255;
color[1] = GR(i,j)&255;
color[2] = BL(i,j)&255;
uint16_t c = (color[0]>>3) << 11;
c |= (color[1]>>2) << 5;
c |= (color[2]>>3) << 0;
lcd_draw_point(i,j,c);
}
}
LcdPush();
LOS_Msleep(2000);
for(int i=0;ifor(int j=0;jstatic unsigned short color[3];
color[0] = RD1(i,j)&255;
color[1] = GR1(i,j)&255;
color[2] = BL1(i,j)&255;
uint16_t c = (color[0]>>3) << 11;
c |= (color[1]>>2) << 5;
c |= (color[2]>>3) << 0;
lcd_draw_point(i,j,c);
}
}
LcdPush();
LOS_Msleep(2000);
for(int i=0;ifor(int j=0;jstatic unsigned short color[3];
color[0] = RD2(i,j)&255;
color[1] = GR2(i,j)&255;
color[2] = BL2(i,j)&255;
uint16_t c = (color[0]>>3) << 11;
c |= (color[1]>>2) << 5;
c |= (color[2]>>3) << 0;
lcd_draw_point(i,j,c);
}
}
LcdPush();
LOS_Msleep(2000);
for(int i=0;ifor(int j=0;jstatic unsigned short color[3];
color[0] = RD3(i,j)&255;
color[1] = GR3(i,j)&255;
color[2] = BL3(i,j)&255;
uint16_t c = (color[0]>>3) << 11;
c |= (color[1]>>2) << 5;
c |= (color[2]>>3) << 0;
lcd_draw_point(i,j,c);
}
}
LcdPush();
LOS_Msleep(2000);
for(int i=0;ifor(int j=0;jstatic unsigned short color[3];
color[0] = RD4(i,j)&255;
color[1] = GR4(i,j)&255;
color[2] = BL4(i,j)&255;
uint16_t c = (color[0]>>3) << 11;
c |= (color[1]>>2) << 5;
c |= (color[2]>>3) << 0;
lcd_draw_point(i,j,c);
}
}
LcdPush();
LOS_Msleep(2000);
}
}
;j++)>;i++)>;j++)>;i++)>;j++)>;i++)>;j++)>;i++)>;j++)>;i++)>
效果
總結(jié)
代碼中有大量的浮點運算,本身也可以作為CPU性能的一個對比測試,同時也可以測試刷屏的速率。從效果來看CPU的性能是不錯的,刷頻效果也可以,后面就正式開始LVGL的移植了。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
開鴻智谷
+關(guān)注
關(guān)注
2文章
116瀏覽量
1112 -
NiobeU4
+關(guān)注
關(guān)注
3文章
31瀏覽量
492
發(fā)布評論請先 登錄
相關(guān)推薦
【AG32開發(fā)板體驗連載】網(wǎng)絡(luò)攝像頭
和 DVP 相機等接口,但是大部分都可以通過 FPGA 核心搭建出來,甚至于那些單總線協(xié)議 ,紅外遙控協(xié)議,都能在 FPGA 核搭建
開發(fā)板上板載 2 個用戶按鍵,4 個自定義 LED 燈,SPI
發(fā)表于 10-11 14:54
開鴻智谷亮相OpenHarmony開發(fā)者大會,與生態(tài)共創(chuàng)開源新篇章!
5月25日,以“鴻心聚力智引未來”為主題的OpenHarmony開發(fā)者大會2024(以下簡稱大會)在深圳成功舉辦。開鴻智谷獲得多項獎項及授牌
開鴻智谷榮獲鴻蒙原生應(yīng)用開發(fā)及培訓(xùn)服務(wù)商牌匾授牌
出席現(xiàn)場,并獲頒鴻蒙原生應(yīng)用開發(fā)及培訓(xùn)服務(wù)商稱號。圖/左4開鴻智谷副總裁李傳釗開
開鴻智谷聯(lián)合多家伙伴戰(zhàn)略簽約,加速鴻蒙生態(tài)發(fā)展!
5月20日,開鴻智谷母公司拓維信息520產(chǎn)品與技術(shù)開放日暨28周年慶圓滿舉行,此次周年慶不僅是對公司創(chuàng)新突破、產(chǎn)品孵化和商業(yè)成果的回顧,更是攜手合作伙伴共同展望未來、開啟新篇章的重要時刻。開
免費!NXP i.MX 93開發(fā)板有獎試用
米爾與NXP合作發(fā)布的新品基于NXPi.MX93應(yīng)用處理器的MYD-LMX9X開發(fā)板免費試用活動來啦~~米爾提供了2塊價值678
開鴻智谷受邀出席2023年度南山區(qū)經(jīng)濟突出貢獻企業(yè)TOP峰會
4月19日,2023年度南山區(qū)經(jīng)濟突出貢獻今業(yè)TOP峰會順利召開,開鴻智谷(深圳子公司)作為南山鴻蒙產(chǎn)業(yè)生態(tài)的核心企業(yè),OpenHarmony項目群A類捐贈人、鴻蒙生態(tài)服務(wù)公司首批入駐
拓維信息及旗下開鴻智谷同獲華為HarmonyOS開發(fā)服務(wù)商認證
近日,拓維信息及旗下開鴻智谷雙雙通過華為HarmonyOS開發(fā)服務(wù)商認證,成為華為“鴻蒙服務(wù)商先鋒計劃”認證級伙伴。秉持共同發(fā)展、共創(chuàng)價值的合作理念,拓維信息、
開鴻智谷與CSDN達成戰(zhàn)略合作,共建OpenHarmony人才計劃
2024年3月19日,開鴻智谷與中國專業(yè)開發(fā)者社區(qū)CSDN就共建OpenHarmony人才計劃達成戰(zhàn)略合作并舉辦發(fā)布儀式。開
國內(nèi)首批 | 開鴻智谷多名講師獲“鴻蒙原生應(yīng)用開發(fā)培訓(xùn)講師”資格認證
2023年3月4日-5日,鴻蒙生態(tài)服務(wù)(深圳)有限公司(以下簡稱“鴻蒙生態(tài)服務(wù)公司”)組織了國內(nèi)首批“鴻蒙原生應(yīng)用開發(fā)培訓(xùn)講師”認證,開鴻智谷
開鴻智谷與數(shù)城科技達成戰(zhàn)略合作
12月21日,數(shù)城科技股份有限公司(以下簡稱數(shù)城科技)董事長杜潛一行到訪湖南開鴻智谷數(shù)字產(chǎn)業(yè)發(fā)展有限公司參觀交流(以下簡稱開鴻智谷),拓維信
【飛騰派4G版免費試用】鴻蒙系統(tǒng)的各種報錯,讓程序員差點.............
開源這一塊,但是大部分的程序員還是停留在生計問題,有時間有精力投入到給開源添磚加瓦的還是比較少,這或許就是開源與程序員的矛盾。
8、好多指令都缺,用起來完全不習(xí)慣,有好多東西需要自己去
發(fā)表于 12-13 15:09
明德?lián)PPCIE開發(fā)板系列XILINX-K7試用體驗-第二篇
本文為明德?lián)P原創(chuàng)文章,轉(zhuǎn)載請注明出處!作者:Vito 明德?lián)PPCIE開發(fā)板系列XILINX-K7試用體驗-第二篇 第二周的試用計劃是實現(xiàn)常見低速協(xié)議(UART,I2C,SPI)的FPG
開鴻智谷亮相第十二屆中國互聯(lián)網(wǎng)測試開發(fā)大會
11月25日,中國互聯(lián)網(wǎng)測試開發(fā)大會在深圳順利開啟,大會以“軟件質(zhì)量保障體系和測試研發(fā)技術(shù)交流”為主要目的,旨在為行業(yè)搭建一個深入探討和交流的橋梁和平臺。開鴻智谷作為深耕OpenHar
LVGL案例分享--手把手教你移植到T113-i國產(chǎn)工業(yè)開發(fā)板
龍科技的T113-i的開發(fā)板上。
LVGL
LVGL,全名“Littlev Graphics Library”,是一個開源的圖形庫,主要用于在嵌入式系統(tǒng)上創(chuàng)建圖形用戶界面(GUI)。它是用C語言編寫
發(fā)表于 11-17 09:55
評論