数学艺术图案画-繁花(四)

数学艺术图案画-繁花(四)

笔者对繁花图案情有独钟,记得在初学QBasic语言时就喜欢用该语言的绘图功能绘制各种图案。在早期的IBM一体机的黑屏幕上用语言输出256色的数学图案,看着五彩的线条生动的图案总是很陶醉。

一块画布: canvas cs.

一个调色板设置:预设调色板 getcolor ( )

加色彩变化 cs.SetColor (255,r1+10,g1+t*20,250-b1)

一个绘图函数: math_artXX ( ) { ······ }

二个简单的绘图语

cs.DrawOval (X, Y, La, Lb, R)

cs.DrawCircle ( X, Y, r )

绘出一组色彩缤纷,美轮美奂的图案。

颜色设置:预设置六个调色板色调,取色亮度及鲜艳,图案绘出时加变色

重点是图案是即时逐线逐帧动画展示的。

本人感受到屏幕的美感,数学绘画的艺术感,简直美极了。

本博文是新推出的一个图样,今后会陆续推出其他图样。谨以此方法贡献给喜欢美的朋友。

本程序是用简单的C语言在安卓手机上编写的。界面是手机屏幕方式。

下面提供源码:

设置全局变量或局部变量

string s,ss,ss1,ss2,ss3; //print text string

float sx,sy, px,py, dx,dy; //center point

float sx1,sy1,sx2,sy2,sx3,sy3,sx4,sy4; //绘图

float a,a1,L,L1,d,r; //sin (a), d degree, Length

float la,lb; //椭圆半长轴,半短轴

double sn; //mode number

int round; //set round steps

int r1,g1,b1; //16m 全色调色板 (A, R, G, B)

double Rn; //random number

int i,j,n,t,k, kn; //t = times, n = number

繁花图案绘图代码:

math_art04 (){

//** init round, n, center point px, py

round=5; n=0; //** 设置动画演示次数,圈数

px=360; py=350; //** 图案输出中心点

//** 重绘图案

redraw04:

cs.SetFillMode (1);//0不填色,1填色

cs.SetColor (255,0,0,0);

cs.DrawRect (0,2,720,722); //页面重置

n=n+1; //计数,圈数

//** 图案绘出:有 8 步图形和颜色变化 ,

//** 本图形是双图形叠加设计,增加中心十字小图形

for (t=1;t<9;t++){ // ** 繁花百变( 4 ) ******

cs.SetFillMode (1);//0不填色,1填色

cs.SetColor (255,0,0,0);

cs.DrawRect(20,660,700,710); //清屏

//** 设置颜色,取得颜色值

getcolor ();

//** 屏幕打印状态提示:次数 t,圈数 n

s=intToString (t);

ss3="Times = "+s;

s=intToString (n);

ss1="Round = "+s;

//** 定范围设置中心距长度

Rn=random()*30+30;

L=(int)Rn; //Rn: 30-60;

//** 屏幕打印状态提示:次数 t,圈数 n

//** 依取得颜色 >>> 颜色变化 a=150 半透明

cs.SetColor (255,r1+10,g1+t*20,250-b1);

cs.SetTextSize (28);

cs.DrawText (" 繁花百变 (04) 四平八稳 ",50,40);

cs.DrawText (ss3,90,680);

cs.DrawText (ss1,240,680);

cs.Update ();

//** 图形区域框线

cs.SetFillMode (0);//0不填色,1填色

cs.SetColor (255,250,250,0);

cs.DrawRect(50,50,670,650); //框线

cs.Update ();

//****** 1 ******

//** 设置颜色,取得颜色值

getcolor ();

//** 图案绘出,pi/8 八角形 i*45度

//** k * n =椭圆比,k*1.5,可 set 0.5 >>> 2.5

//** 图案展示:图案和色彩 8次叠加,5圈展示5个图案

for(i=0;i<16;i++){ // pi/4 十字形 i*90度

a=2*pi/8*i ;

sx1=(float)((L+45)*sin(a))+px;

sy1=(float)((L+45)*cos(a))+py;

a1=2*pi/16*i ;

sx2=(float)((L+140)*sin(a1))+px;

sy2=(float)((L+140)*cos(a1))+py;

for (k=10;k<60;k++){

//** 依取得颜色 >>> 颜色变化 a=150 半透明

cs.SetColor (150,r1+10,g1+k*4,250-b1);

if ((k-k/2*2)==0){ //线条疏密

cs.DrawOval (sx1,sy1,60,k*1.5,i*45);

cs.DrawCircle (sx2,sy2, k/5);

} } }

cs.Update (); //即时动画演示

//****** 2 **** center figure

getcolor ();

//** 图案绘出,pi/4 十字形 i*90 度

//** k * n =椭圆比,k*1.5,可 set 0.5 >>> 2.5

for(i=0;i<8;i++){ // pi/4 十字形 i*90度

a=2*pi/4*i ;

L=40;

sx1=(float)(L*sin(a))+px;

sy1=(float)(L*cos(a))+py;

for (k=10;k<60;k++){

//** 依取得颜色 >>> 颜色变化 a=150 半透明

cs.SetColor (150,r1+10,g1+k*4,250-b1);

if ((k-k/2*2)==0){ //线条疏密

la=30; lb=k*1.5;

cs.DrawOval (sx1,sy1, la, lb, i*90);

} } }

cs.Update (); //即时动画演示

} //next t

sleep (1000); //next round delay

if (n<round) goto redraw04; //下一圈

}//test4 ()

附样例图案: ( Times = 8 )

另附动画展示中间过程图案:( Times = 1 -- 7 )

预设置调色板函数:

getcolor (){

//** 预设置调色板 (六个色调)

Rn=random()*5+1; //color change

kn=(int)Rn;

if (kn==1){r1=245; g1=-50; b1=250; } //red

if (kn==2){r1=220; g1=20; b1=0; } //pink

if (kn==3){r1=60; g1=0; b1=0; } //blue

if (kn==4){r1=120; g1=0; b1=0; } //purple

if (kn==5){r1=30; g1=50; b1=150; }//green

if (kn==6){r1=225;g1=30;b1=120; } //orenge

//** return >>> color ( R, G, B ) = r1, g1, b1

}//getcolor ()

//** End ****

相关推荐
代码中介商1 小时前
C语言数据存储深度解析:从原码反码补码到浮点数存储
c语言·开发语言·内存
hipolymers2 小时前
C语言怎么样?难学吗?
c语言·数据结构·学习·算法·编程
xuhaoyu_cpp_java4 小时前
连接池学习
数据库·经验分享·笔记·学习
W.W.H.4 小时前
FreeRTOS移植(保姆级教程)
经验分享·单片机·操作系统·freertos·rtos
努力努力再努力wz5 小时前
【Linux网络系列】深入理解 I/O 多路复用:从 select 痛点到 poll 高并发服务器落地,基于 Poll、智能指针与非阻塞 I/O与线程池手写一个高性能 HTTP 服务器!(附源码)
java·linux·运维·服务器·c语言·c++·python
爱写代码的倒霉蛋5 小时前
天梯赛备赛经验分享(基础版)
经验分享·算法
minji...5 小时前
Linux 线程同步与互斥(四) POSIX信号量,基于环形队列的生产者消费者模型
linux·运维·服务器·c语言·开发语言·c++
uElY ITER5 小时前
VS与SQL Sever(C语言操作数据库)
c语言·数据库·sql
LaughingZhu6 小时前
Product Hunt 每日热榜 | 2026-04-21
人工智能·经验分享·深度学习·神经网络·产品运营
程序猿编码6 小时前
给Linux程序穿“隐身衣”——ELF运行时加密器全解析(C/C++代码实现)
linux·c语言·c++·网络安全·elf·内存安全