正五边形C语言绘制方法

正五边形C语言绘制方法
平面几何大家都学过,基本的概念就是点、线、面,三角形、矩形、圆形和椭圆形,还有就是多边形。学几何时都强调用圆规直尺三角板作图,学到角度就用到量角尺。那时我对五角星,六角星很感兴趣。后来有了PC,接触到了BASIC语言,那时就用它的内置绘图函数来绘图了。积累了一定的知识和经验,也试编过图画类型的应用程序。

现时有一个行当叫做平面设计,那些个图画的东西都叫平面设计,如商标徽标设计,标牌标识,书籍杂志封面、电影海报、平面广告等等有图画图形图像的东西的设计作品都是平面设计。其中最主要的设计元素就是图形元素。而说到图形元素,关键的东西就是图形和如何绘制图形。

说回来就是我喜欢图形的绘制,用编程语言把图形画出来。我对正五边形,正六边形情有独衷,在编制艺术信息图表时用到正五六边形图案,就试着用语言编制了这个通用函数。我感到干得不错就想和大家来分享。
我设计的方法很简单,就是依据圆内切多边形的方法。这个原理大家都知道,而关键的东西是如何填充颜色。我的填充的方法是从圆心起画五边形,画到指定的尺寸。

下面我写了3个样例来测试绘制五边形的函数。代码很简单,都是些基本的东西,加了注释,一看就明白。

五边形图形绘制的源代码如下:

Pentagon (){    //正五边形绘制方法通用函数
// a=pi/180*i*72 ; 或a=pi/180*i*2 ;  > 画五角星 
//d=0 >3点钟,  d=180 >9点钟  ,d=90 >12点钟
//d=270 >6点钟
//x, y 坐标,Ls=Length, d=Degree 起点
//绘制的方法是圆内切五边形,为方便我不计算证明,直接以半径来代替边长了。我的目的是图形,不是CAD的需要精确计算。
//4个参数 ( flaot x, y, L ;   int d ;  )  x,y圆心定位坐标,L长度=半径,d角度。
        a=pi/180-pi/180*d ;   
          x3=(float)(Ls*cos(a))+x ;   //起始0点
          y3=(float)(Ls*sin(a))+y ;
       // cs.DrawCircle(x3,y3,1);    //此点可加
            x5=x3 ;   y5=y3 ;

   for (m=1; m<=4; m++){   //五边点后4点位
          a=pi/180*m*72-pi/180*d ;   
          x4=(float)(Ls*cos(a))+x ;
          y4=(float)(Ls*sin(a))+y ;   //顺时针
       // cs.DrawCircle(x4,y4,1);    //此点可加
          cs.DrawLine (x5,y5,x4,y4);   //连线 
             x5=x4;  y5=y4 ;    }    
         cs.DrawLine (x5,y5,x3,y3);   //连线0点
}//Pentagon ()

 

4eb20cc7c97f4a39bdc33c9f108b726d.png

下面是2个测试样例:
test (){   //测试 draw pentagon  上下方向例(1)
      cs.ClearDraw (0,src);   //清屏
      clearOutput();
      cs.SetFillMode (1);//0不填色,1填色
         cs.SetColor (255,230,250,250);
      cs.DrawRect (0,2,720,780);   //back board
         cs.SetColor (255,140,140,140);
      cs.DrawRect (24,24,706,706);   //back      
         cs.SetColor (255,250,250,250);
      cs.DrawRect (20,20,700,700);   //back 
      cs.SetFillMode (0);//0不填色,1填色
         cs.SetColor (255,0,0,250);
      cs.DrawRect (20,20,700,700);   //back 
      cs.DrawRect (26,25,694,695);   //back 
 
 // 正五边形绘制,起点位置:d=0°-360°
// d=0 >3点钟,  d=180 >9点钟,
// d=90 >12点钟,  d=270 >6点钟
     cs.SetFillMode (0);//0不填色,1填色
     cs.SetStrokeWidth(2);    //线
//******** d=90 >12 点钟方向
      x=150 ; y=200 ; Ls=100 ;   d=90 ;   
        cs.SetColor(255,250,0,250);  
        Pentagon ();     //边线

         x=350 ;    //填色
        cs.SetColor(255,0,200,250);  //set fill color
        kn=(int)Ls ;     //set steps
   for (n=0; n<=kn; n++){   //fill pentagon填色
        Ls=n;            
        Pentagon ();   }

        x=550 ;
        cs.SetColor(255,0,200,0);  //set fill color
        kn=(int)Ls ;     //set steps
   for (n=0; n<=kn; n++){   //fill pentagon填色
        Ls=n;            
        Pentagon ();   }
        cs.SetColor(255,250,150,0);  //套框线
        Pentagon ();

//********d=270  6点钟方向
      x=150 ; y=450 ; Ls=100 ;   d=270 ;   
         cs.SetColor (255,0,150,250);
       cs.SetColor(255,250,0,250);  
        Pentagon ();     //边线

         x=350 ;    //填色
        cs.SetColor(255,0,200,250);  //set fill color
        kn=(int)Ls ;     //set steps
   for (n=0; n<=kn; n++){   //fill pentagon填色
        Ls=n;            
        Pentagon ();   }

        x=550 ;
        cs.SetColor(255,0,200,0);  //set fill color
        kn=(int)Ls ;     //set steps
   for (n=0; n<=kn; n++){   //fill pentagon填色
        Ls=n;            
        Pentagon ();   }
        cs.SetColor(255,250,150,0);  //套框线
        Pentagon ();

 //题标:  艺术立体字制作
      cs.SetFillMode (1);//0不填色,1填色
      cs.SetTextStyle (1);
      cs.SetStrokeWidth(1);

  cs.SetColor(255,0,0,250);   //标注
    cs.SetTextSize (24);
   cs.DrawText ("绘线不填色", 95,330) ;
   cs.DrawText ("填色 ", 327,330) ;
   cs.DrawText ("套线填色 ", 507,330) ;
      cs.SetTextSize (44);
           ss="样例:  正五边形绘制方法(1)" ;
      cs.SetColor(255,50,120,20);      //立体字
           cs.DrawText (ss,114,654);    //阴影
      cs.SetColor(255,0,250,0);
           cs.DrawText (ss,110,650);    //本字
      cs.SetFillMode (0);//0不填色,1填色
      cs.SetColor(255,250,150,0);
           cs.DrawText (ss,110,650);    //框线
    cs.Update ();
}//test ()

 

9e844fce50dc40caaa85007466dd1226.png 

test1 (){   //draw pentagon  四个方向例(2)
   cs.ClearDraw (0,src);   //清屏
      clearOutput();
      cs.SetFillMode (1);//0不填色,1填色
         cs.SetColor (255,230,250,250);
      cs.DrawRect (0,2,720,780);   //back board
         cs.SetColor (255,140,140,140);
      cs.DrawRect (24,24,706,706);   //back      
         cs.SetColor (255,250,250,250);
      cs.DrawRect (20,20,700,700);   //back 
      cs.SetFillMode (0);//0不填色,1填色
         cs.SetColor (255,0,0,250);
      cs.DrawRect (20,20,700,700);   //back 
      cs.DrawRect (26,25,694,695);   //back 
 
 // 正五边形绘制,起点位置:d=0°-360°
// d=0 >3点钟,  d=180 >9点钟,
// d=90 >12点钟,  d=270 >6点钟
     cs.SetFillMode (0);//0不填色,1填色
     cs.SetStrokeWidth(2);    //线
//******** d=0 > 3 点钟方向
      x=500 ; y=310 ; Ls=100 ;   d=0 ;   
        cs.SetColor(255,0,250,200);  // fill color
        kn=(int)Ls ;     //set steps
   for (n=0; n<=kn; n++){   //fill pentagon填色
        Ls=n;            
        Pentagon ();   }
        cs.SetColor(255,250,150,0);  //套框线
        Pentagon ();
//******** d=90 > 12 点钟方向
      x=360 ; y=170 ; Ls=100 ;   d=90 ;   
        cs.SetColor(255,0,250,200);  // fill color
        kn=(int)Ls ;     //set steps
   for (n=0; n<=kn; n++){   //fill pentagon填色
        Ls=n;            
        Pentagon ();   }
        cs.SetColor(255,250,150,0);  //套框线
        Pentagon ();
//******** d=180 > 9 点钟方向
      x=220 ; y=310 ; Ls=100 ;   d=180 ;   
        cs.SetColor(255,0,250,200);  // fill color
        kn=(int)Ls ;     //set steps
   for (n=0; n<=kn; n++){   //fill pentagon填色
        Ls=n;            
        Pentagon ();   }
        cs.SetColor(255,250,150,0);  //套框线
        Pentagon ();
//******** d=270 > 6点钟方向
       x=360 ; y=450 ; Ls=100 ;   d=270 ;   
        cs.SetColor(255,0,250,200);  // fill color
        kn=(int)Ls ;     //set steps
   for (n=0; n<=kn; n++){   //fill pentagon填色
        Ls=n;            
        Pentagon ();   }
        cs.SetColor(255,250,150,0);  //套框线
        Pentagon ();

 //题标:  艺术立体字制作
      cs.SetFillMode (1);//0不填色,1填色
      cs.SetTextStyle (1);
      cs.SetStrokeWidth(1);
      cs.SetTextSize (44);
           ss="样例:  正五边形绘制方法(2)" ;
      cs.SetColor(255,50,120,20);      //立体字
           cs.DrawText (ss,114,654);    //阴影
      cs.SetColor(255,0,250,0);
           cs.DrawText (ss,110,650);    //本字
      cs.SetFillMode (0);//0不填色,1填色
      cs.SetColor(255,250,150,0);
           cs.DrawText (ss,110,650);    //框线
    cs.Update ();
}//test1 ()
 

e76dd24956bb4eeea55950e5e066e697.png
//绘制五边形信息图表样例:
drawPentagon3 (){    //中心为五角星形
     cs.ClearDraw (0,src);   //清屏
      clearOutput();
      cs.SetFillMode (1);//0不填色,1填色
         cs.SetColor (255,230,250,250);
      cs.DrawRect (0,2,720,880);   //back board
         cs.SetColor (255,140,140,140);
      cs.DrawRect (24,24,706,806);   //back      
         cs.SetColor (255,250,250,250);
      cs.DrawRect (20,20,700,800);   //back 
      cs.SetFillMode (0);//0不填色,1填色
         cs.SetColor (255,0,0,250);
      cs.DrawRect (20,20,700,800);   //back 
      cs.DrawRect (26,25,694,795);   //back  

 // 正五边形绘制
     cs.SetFillMode (1);//0不填色,1填色
     cs.SetStrokeWidth(2);    //线

      dx=360 ;  dy=360 ;   //center
      L1=200 ;  Ls=124 ;    //12点钟方向
         cs.SetFillMode (0);//0不填色,1填色
    for (i=0; i<=200; i++){   //中心五角星
           cr=250-i; cg=i+50;  cb=100;  //渐变色
        cs.SetColor(255,cr, cg, cb);  
       cs.DrawCircle (dx,dy, i);       }

 //**** draw five Pentagon *****
     cs.SetFillMode (1);//0不填色,1填色
          d=72+90 ;  //d +90 , 12点钟方向
     for (i=0; i<=4; i++){    
          ma=pi/180*i*72+pi/180*90 ;
           x0=(float)(L1*cos(ma))+dx ;   
           y0=(float)(L1*sin(ma))+dy ;
          kn=(int)Ls ;   x=x0;  y=y0;    //set steps
    for (n=0; n<=kn; n++){   //fill pentagon
     cs.SetColor(255,200,250,250);  //set fill color
          Ls=n;            
          Pentagon ();   }  
     cs.SetColor(255,250,0,0);  //套框线
          Pentagon ();   }  

//打印标号
    for (n=0; n<=4; n++){    //draw 标号
           ma=pi/180*n*72+180 ;
           d=n*72+90;   Ls=124;
           x5=(float)(130*cos(ma))+dx ;   
           y5=(float)(130*sin(ma))+dy ;
               cs.SetColor(255,250,200,0);  
           cs.DrawCircle (x5,y5,31) ;     
               cs.SetColor(255,0,250,250);  
           cs.DrawCircle (x5,y5,29) ;     
               cs.SetTextSize (36);
           cs.SetColor(255,250,0,250);  
           ss="0"+intToString (n+1);
           cs.DrawText (ss, x5-20 ,y5+12 ) ;     }
    cs.Update ();
}//drawPentagon3 ()

//****End********

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/548028.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【攻防世界】lottery

弱比较代码审计 本题已提供源码&#xff0c;如果没提供&#xff0c;输入/robots.txt&#xff0c;发现/.git function buy($req){require_registered();require_min_money(2);$money $_SESSION[money];//接受用户原有money$numbers $req[numbers];//接受输入的数字$win_num…

生产者消费者模型之环形队列

引入 以电影院买票为例 去电影院看电影需要先买票&#xff0c;如果买过票了&#xff0c;哪怕我们没有去看电影&#xff0c;在电影票的有效期内&#xff0c;电影院对应的座位就是属于你的。 买票的本质&#xff1a;对资源&#xff08;座位&#xff09;的预订。 信号量 本质…

【VUE】Vue项目打包报告生成:让性能优化触手可及

Vue项目打包报告生成&#xff1a;让性能优化触手可及 Vue.js是一款流行的前端框架&#xff0c;开发者在使用Vue.js构建项目时&#xff0c;生产环境的性能优化尤为重要。为了帮助开发者分析和优化打包出来的资源&#xff0c;生成打包报告是一个不可或缺的步骤。本文将介绍几种在…

光纤收发器的注意事项

光纤收发器有各种不同的类别&#xff0c;而实际使用中最受关注的是根据光纤收发器的不同类别&#xff1a;SC连接器光纤收发器和FC/ST连接器光纤收发器。 当使用光纤收发器连接到不同的设备时&#xff0c;必须小心使用不同的端口。 1.光纤收发器与100Base TX设备&#xff08;交…

RAKsmart:硅谷裸机云多IP服务器性能评测

在云计算领域&#xff0c;裸机云作为一种结合了传统物理服务器与云计算优势的服务模式&#xff0c;近年来备受关注。硅谷裸机云作为业界佼佼者&#xff0c;以其出色的性能和稳定性赢得了众多用户的青睐。今天&#xff0c;我们就来评测一下硅谷裸机云的多IP服务器性能。 首先&am…

JVM基础第二篇

目录 垃圾回收 如何判断对象可以回收 引用计数法 可达性分析算法 定义 哪些对象可以作为GC roots&#xff1f; 四种引用 1.强引用 2.软引用&#xff08;SoftReference&#xff09; 3. 弱引用&#xff08;WeakReference&#xff09; 4. 虚引用&#xff08;PhantomRefe…

OpenHarmony轻量系统开发【6】驱动之ADC按键

摘要&#xff1a;本文简单介绍如何操作ADC去读取电压&#xff0c;并且实现开发板上3个ADC按键检测的功能 适合群体&#xff1a;适用于润和Hi3861开发板&#xff0c;L0轻量系统驱动开发 文中所有代码仓库&#xff1a;https://gitee.com/qidiyun/hihope-3861-smart-home-kit 6…

FL Studio v21.2.3.4004 中文永久版网盘下载(含Key.reg注册表补丁)

软件介绍 FL Studio21水果编曲软件汉化版是一款专业的音乐制作软件&#xff0c;被广泛地应用于电子音乐、hip-hop、流行乐等多种音乐类型的制作。该软件提供了丰富的音频编曲工具和音乐效果器&#xff0c;让用户可以轻松地创作出高品质的音乐作品。同时&#xff0c;这也是一款…

在比特币中,1 sat 是多少美元?

普通人绝对想不到&#xff0c;比特币能在2024年达到这个价值&#xff0c;早知道的话&#xff0c;我当初就是破釜沉舟也得买一个啊。 而在4月19号&#xff0c;也将迎来比特币再次减半。减半并不是说玩家手中的比特币要被突然减去一半&#xff0c;而是在后续的挖矿过程中&#xf…

[Algorithm][双指针][复写零][快乐数][盛水最多的容器][有效三角形的个数]详细解读 + 代码实现

目录 1.复写零1.题目链接2.算法原理讲解3.代码实现 2.快乐数1.题目链接2.算法原理讲解3.代码实现 3.盛水最多的容器1.题目链接2.算法原理讲解3.代码实现 4.有效三角形的个数1.题目链接2.算法原理讲解3.代码实现 1.复写零 1.题目链接 题目链接 2.算法原理讲解 先找到最后一个…

洁净室空气颗粒物检测-激光尘埃粒子计数器如何选型 北京中邦兴业

空气颗粒是通过迫使空气通过颗粒计数器中的空腔来测量的&#xff0c;该计数器使用激光来测量和计数颗粒。这是通过一个称为光散射的过程来实现的。 粒子计数器的部件 在粒子计数器内&#xff0c;你会发现一个激光传感器块。这就是使用光散射原理来确定粒子大小和数量的地方。…

Linux内核与基础命令学习总结

Linux操作系统 Linux操作系统博大精深&#xff0c;其中对线程&#xff0c;IO&#xff0c;文件系统等概念的实现都很有借鉴意义。 ​ 文件系统和VFS 文件系统的inode上面讲过了。VFS主要用于屏蔽底层的不同文件系统&#xff0c;比如接入网络中的nfs文件系统&#xff0c;亦或是w…

51单片机入门_江协科技_29~30_OB记录的自学笔记_DS18B20温度传感器

29. DS18B20温度传感器 29.1. DS18B20介绍 •DS18B20是一种常见的数字温度传感器&#xff0c;其控制命令和数据都是以数字信号的方式输入输出&#xff0c;相比较于模拟温度传感器&#xff0c;具有功能强大、硬件简单、易扩展、抗干扰性强等特点 •测温范围&#xff1a;-55C 到 …

Go 编译构建的一些细节

Go 编译构建的一些细节 发现自己竟然没有怎么认真研究过 go 的编译构建命令。 结论前置 go run 专门用来运行命令源码文件的命令&#xff0c;一般用来运行单个文件go build 主要是用于测试编译。编译某个包或者项目&#xff0c;在当前目录下生成可执行文件go install 编译并…

图形化编程要怎么做

0. 简介 Scratch其实应该算得上最早做图形化编程的工程了。Scratch 是麻省理工学院的“终身幼儿园团队”在 2007 年 [5]发布的一种图形化编程工具&#xff0c;主要面对全球青少年开放&#xff0c;是图形化编程工具当中最广为人知的一种&#xff0c;所有人都可以在软件中创作自…

大模型赋能:爬虫技术的全新革命

大模型加持下的爬虫技术革新&#xff1a;从BS4到提示工程的飞跃 在爬虫技术的演进历程中&#xff0c;内容解析一直是一个核心环节。传统的爬虫技术&#xff0c;如使用BeautifulSoup&#xff08;BS4&#xff09;等工具&#xff0c;需要逐个解析网页内容&#xff0c;通过XPath或C…

【NPS】内网穿透工具之 NPS

一、linux 安装 nps nps-releases&#xff1a;https://github.com/ehang-io/nps/releases 1.1、在 ubuntu下安装对应版本&#xff08;非docker&#xff09; 可以看到如下指令 wget https://ghproxy.com/https://github.com/ehang-io/nps/releases/download/v0.26.10/linux…

网络安全-自学笔记

一、自学网络安全学习的误区和陷阱 1.不要试图先成为一名程序员&#xff08;以编程为基础的学习&#xff09;再开始学习 我在之前的回答中&#xff0c;我都一再强调不要以编程为基础再开始学习网络安全&#xff0c;一般来说&#xff0c;学习编程不但学习周期长&#xff0c;而…

weblogic JSP action的配置

action(如xxx.do)可以在Java文件中通过注解的方式配置,也可以在web.xml中进行配置 在java文件中配置的场合 @WebServlet(xxxx.do) 并实现支持的方法:doGet或doPost等 或者 @WebServlet(xxxx.do) 并实现service方法 所有method的处理方法都会先经过service方法 在web.x…

【24年物联网华为杯】赛题分析与初步计划

赛事介绍 官网链接&#xff1a;2024 年全国大学生物联网设计竞赛 (sjtu.edu.cn) 含金量&#xff1a;属于A类赛事 &#xff08;注意&#xff1a;很多搜索结果的序号是按照选入时间排列的&#xff0c;与含金量无关&#xff0c;华为杯是23年选入的&#xff09; Kimi Chat: 全国…