数学艺术图案画-曼陀罗(33)
数学艺术图案画曼陀罗33本系列曼陀罗图案创制一直以来都是我的最爱。我总是被色彩绚烂和美轮美奂的图案感动。在前些时候完成了曼陀罗图案系列的3轮既定目标 图1至 图30。本博文开始提供的是第4 集系列曼陀罗图案 图31至图40 。再次把美好的东西贡献给大家希望大家喜欢。曼陀罗图案画是一类经典的、具有长久历史的艺术形式。在多个种族文化和宗教传统中占据很特殊地位。且不谈宗教方面其图案在美学和艺术方面就有那无与伦比的地位。图案通常以圆形呈现它那几何图形的集合图案的对称性、复杂性以及色彩的绚烂和变化多端常能激起人们对美的憧憬和向往。本博文提供了最为简单和直观的数学艺术绘图方法一块画布 Canvas cs.Draw...一个调色板设置预设调色板 getcolor ( )加色彩变化 SetColor (180, r1, g1k*cn, b1)一个绘图函数 mandalaXX ( ) { ······ }几个简单的绘图语句canvas.DrawOval (X, Y, La, Lb, R) 画椭圆canvas.DrawCircle (X, Y, R) 画圆形绘出一组色彩缤纷美轮美奂的图案。颜色设置原预设置六个调色板色调取色彩亮度及鲜艳图案绘出时加色彩变化。今有修正增加一色调黄色yellow 。图案的绘制要点是以椭圆的长短轴变化半径变化以及中心距的变化再加上色彩的变化来完成图案的复杂度图案图形的艺术性。各参数的变化代码中有注释。本设计的重点图案是即时逐线逐帧动画展示的。本人感受到屏幕的美感数学绘画的艺术感简直美极了。本博文是曼陀罗图案系列文档今后会陆续推出其他图样。谨以此方法贡献给喜欢美的朋友。本程序是用简单的C语言在安卓手机上编写的。界面是手机屏幕方式。总结一下图形和色彩变化的要点一是图形变化图形输出中心距L变化加微调距离(L40)叠加图形以及椭圆的长短轴尺寸比例的变化循环套叠画出图形。二是色彩变化预设置调色板色调模型循环绘图时调用k值微调RGB颜色值来变化输出图形色彩。细心的读者对比一下几篇博文就能体会此中奥妙。下面是源码//设置全局变量或局部变量float pi3.1415926535;string s,ss,ss1,ss2,ss3; //print text strinfloat sx,sy, px,py, dx,dy; //center pointfloat sx1,sy1,sx2,sy2,sx3,sy3,sx4,sy4; //绘图float a,a1,a2, L,L1,d,r; //sin (a), d degree, Lengthdouble sn; //mode numberint round; //set roundint r1,g1,b1; //16m 全色调色板 A, R, G, B)double Rn; //random numberint i,j,n,t,k, kn; //t times, n numbeint cn; //设置调色板色彩变化系数预设置调色板getcolor (){//** 此是新修正的调色板//** 原预设置调色板 (六个色调新增yellow// 1 red 2 pink 3 blue 4 purple// 5 green 6 orange 7 yellow// cn 色调变化系数 cn 5 to 20// cn小 红色调 大 蓝绿色调Rnrandom()*71; //colorkn(int)Rn;if (kn1){r1250; g1-120; b10; cn5; } //redif (kn2){r1250; g1-50; b1250; cn10; } //pinkif (kn3){r10; g10; b1250; cn15; } //blueif (kn4){r1160; g10; b1250; cn20; } //purpleif (kn5){r10; g1200; b1100; cn15; }//greenif (kn6){r1250;g130;b1100; cn15; } //orangeif (kn7){r1250; g1250; b10; cn10; } //yellow//** return color (A,R,G,B ) r1, g1, b1}//getcolor ()图例Times 8 是一次循环展示的图案Times ( 1 - 7 ) 是动画展示的中间过程图案。图案源码如下mandala33 (){//** init round, n, center point px, pyround2; n0; //** 设置动画演示次数圈数px360; py360; //** 图案输出中心点//** 重绘图案redraw33:cs.SetFillMode (1);//0不填色1填色cs.SetColor (255,0,0,0);cs.DrawRect (0,0,720,720); //页面重置nn1; //计数圈数//** 图案绘出有 8 步图形和颜色变化for (t1; t8; t){cs.SetFillMode (1); //0不填色1填色cs.SetColor (255,0,0,0);cs.DrawRect(20,660,700,710); //清屏//** 设置颜色取得颜色值getcolor ();cs.SetColor (255,r1, g1200, b1);//** 屏幕打印状态提示次数 t圈数 nsintToString (t);ss3Times s;sintToString (n);ss1Round s;cs.SetTextSize (28);cs.DrawText (曼陀罗图案 (33) ,50,40);cs.DrawText (ss3,90,680);cs.DrawText (ss1,240,680);cs.Update ();//** 图形区域框线cs.SetFillMode (0);//0不填色1填色cs.DrawRect(50,50,670,650); //框线cs.Update ();//** 图案绘出pi/8 八角形 i*45度pi/6 六角形 60度//** k * n 椭圆比k*1.5可 set 0.5 2.5//** 图案展示图案和色彩 8次叠加2圈展示16个图案//** 图案采用多层图形多层色彩套叠设计方法//****** figure 1 ******//** 重新设置颜色取得颜色值getcolor ();for(i0;i16;i){a2*pi/16*i ; L130;sx1(float)(L*sin(a))px;sy1(float)(-L*cos(a))py;for (k10;k40;k){// ** 依取得颜色 颜色变化 a150 半透明cs.SetColor (180,r1, g1k*cn, b1);cs.DrawOval (sx1,sy1, 20, k*0.8, i*22.5);cs.DrawCircle (sx1,sy1, k/5);} }//****** figure 2 ******//** 重新设置颜色取得颜色值getcolor ();for(i0;i4;i){a2*pi/4*i ; L130;sx1(float)(L*sin(a))px;sy1(float)(-L*cos(a))py;sx2(float)((L10)*sin(a))px;sy2(float)(-(L10)*cos(a))py;for (k10;k40;k){// ** 依取得颜色 颜色变化 a150 半透明cs.SetColor (180,r1, g1k*cn, b1);cs.DrawOval (sx1,sy1, 30, k*0.8, i*90);cs.DrawOval (sx2,sy2, 10, k*1.2, i*90);cs.DrawCircle (sx1,sy1, k/5);} }//****** figure 3 ******//** 重新设置颜色取得颜色值getcolor ();for(i0;i4;i){a2*pi/4*ipi/4 ; L130;sx1(float)(L*sin(a))px;sy1(float)(-L*cos(a))py;for (k10;k40;k){// ** 依取得颜色 颜色变化 a150 半透明cs.SetColor (180,r1, g1k*cn, b1);cs.DrawOval (sx1,sy1, 25, k*1.2, i*9045);cs.DrawCircle (sx1,sy1, k/3);} }//****** figure 4 ****** 图形叠加设计//** 设置颜色取得颜色值getcolor ();for(i0;i8;i){a2*pi/8*ipi/8 ; L140;sx1(float)(L*cos(a))px;sy1(float)(L*sin(a))py;for (k10;k30;k){//** 依取得颜色 颜色变化 a150 半透明cs.SetColor (180,r1, g1k*cn, b1);cs.DrawOval (sx1,sy1,30,k*0.5,i*4522.5);cs.DrawCircle (sx1,sy1, k/5);} }//****** figure 5 ****** 图形叠加设计//** 设置颜色取得颜色值getcolor ();for(i0;i8;i){a2*pi/8*i ; L80;sx1(float)(L*cos(a))px;sy1(float)(L*sin(a))py;for (k10;k40;k){//** 依取得颜色 颜色变化 a150 半透明cs.SetColor (180,r1, g1k*cn, b1);cs.DrawOval (sx1,sy1,40,k*0.8, i*45);cs.DrawCircle (sx1,sy1, k/5);} }//****** center figure ******getcolor ();for(i0;i8; i){a2*pi/8*i ; L50;sx1(float)(L*sin(a))px;sy1(float)(-L*cos(a))py;for (k10;k30; k){//** 依取得颜色 颜色变化 a150 半透明cs.SetColor (180,r1, g1k*cn, b1);cs.DrawOval (sx1,sy1,10,k*1.8 , i*45);cs.DrawCircle (sx1,sy1, k/5);} }cs.Update (); //即时动画演示} //next tsleep (1000); //next round delayif (nround) goto redraw33; //下一圈}//test33//** End ****

相关新闻