正多边形画法,圆的内接,外切正多边形画法。

原创 2015年02月08日 00:11:39
文章首发在oschina这个不是首发,但作者都是我一个人。这个是在上一篇费氏数列螺线画法的基础上改的所以注释有些奇怪,大家不要见怪哈吐舌头
void CMyDlg::OnButton2()
{
 // TODO: Add your control notification handler code here
 CDC *pDC;
 pDC = this->GetDC();
 int iList[100];
 iList[0]=1;     //费氏数列初始的两个元素
 iList[1]=1;
 int i;
 int ix;     //横坐标的整数点
 int iy;     //纵坐标的整数点
 double dR=200;  //半径
 int iStart=300;
 int iNum=9;     //画几边形;10个圆就是,10-1边形
  
 double dx,dy;
 double dPi = 3.1415926535; //π,2π是一个圆周
 double dPercision = 0.01;  //精度0.01弧度  数值小,越像多边形
 double da=0;    //角度
 dx = cos(da)*dR;    //取得XY坐标,cos和sin呼唤,可以改变旋转方向,目前是顺时针
 dy = sin(da)*dR;
 ix = int(dx);   //取整
 iy = int(dy);
 pDC->MoveTo(iStart+ix, iStart+iy);
 for(da=0; da<=2*dPi; da+=dPercision)    //画圆
 {
  dx = cos(da)*dR;
  dy = sin(da)*dR;
  ix = int(dx);
  iy = int(dy);
  pDC->LineTo(iStart+ix, iStart+iy);
 }
 i=0;
 dPercision = 2*dPi/9.00001;    //画内接九边形
 for(da=0; da<=2*dPi; da+=dPercision)
 {
  dx = cos(da)*dR;
  dy = sin(da)*dR;
  ix = int(dx);
  iy = int(dy);
  iList[i++]=ix;
  iList[i++]=iy;
  pDC->LineTo(iStart+ix, iStart+iy);
  pDC->LineTo(iStart, iStart);
  pDC->LineTo(iStart+ix, iStart+iy);
 }
 i=0;
 dPercision = 2*dPi/9.00001;    //画外接九边形
 dR=dR/sin(dPi-dPercision/2-dPi/2);//(半径变化)
 for(da=0; da<=2*dPi; da+=dPercision)
 {
  dx = cos(da)*dR;
  dy = sin(da)*dR;
  ix = int(dx);
  iy = int(dy);
  iList[i++]=ix;
  iList[i++]=iy;
  pDC->LineTo(iStart+ix, iStart+iy);
  pDC->LineTo(iStart, iStart);
  pDC->LineTo(iStart+ix, iStart+iy);
 }
 pDC->SetTextColor(RGB(255, 0, 0));
 i=0;
 dPercision = 2*dPi/9.00001;    //画外接九边形
 //dR=dR/sin(dPi-dPercision/2-dPi/2);
 for(da=dPercision/2; da<=2*dPi+dPercision/2; da+=dPercision)//转动半顶角个角
 {
  dx = cos(da)*dR;
  dy = sin(da)*dR;
  ix = int(dx);
  iy = int(dy);
  iList[i++]=ix;
  iList[i++]=iy;
  pDC->LineTo(iStart+ix, iStart+iy);
  pDC->LineTo(iStart, iStart);
  pDC->LineTo(iStart+ix, iStart+iy);
 }

好吧,这个像是车轮了。。

运用椭圆画法,45行代码画出任意正多边形

最近做Box2dWeb开发时,想写个创建正多边形的功能,可是由于学识尚浅,我在草稿纸上画了,想了一个上午也没有研究出什么好方法。后来翻抽屉的时候,找出了以前哥哥画的一张用同心圆画椭圆的示意图。看到这幅...
  • yorhomwang
  • yorhomwang
  • 2014年10月26日 17:49
  • 5073

opengl 画正N边形

利用画圆的方法来画正N边形 当N越大图形越趋近于圆 #include #include #include const GLfloat R=0.5f; const GLfloat Pi=3.141592...
  • lh__huahuan
  • lh__huahuan
  • 2015年09月26日 16:10
  • 1062

如何画一个正多边形

本文由BarryZhang原创,同时首发于barryzhang.com,简书,非商业转载请注明作者和原文链接。 场景给定一个指定的正方形的区域,要求在该区域内画一个正N边形(正三角形、正方形、正五边形...
  • barryhappy
  • barryhappy
  • 2016年12月13日 10:46
  • 886

系统分析与设计——活动图画法

1
  • u012510270
  • u012510270
  • 2014年06月15日 23:33
  • 1044

第7周-正多边形的面积

问题及代码: /* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:Area.cpp *作 者...
  • MIKASA3
  • MIKASA3
  • 2015年10月13日 19:47
  • 489

JavaScript——正多边形

在JavaScript中实现画正多边形
  • qq_35162107
  • qq_35162107
  • 2017年01月19日 15:25
  • 224

UML类图画法及其之间的几种关系

类图,发现类图的画法及其之间的几种关系已经淡忘了很多,所以整理总结一下,有问题的地方大家可以一起讨论下。文章目录如下:类图画法类之间的几种关系:泛化(Generalization)、实现(Realiz...
  • wanmeirongyan100
  • wanmeirongyan100
  • 2016年06月07日 09:45
  • 6563

多边形划分-卡特兰数

区域赛系列一多边形划分 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 Give you a convex(凸边形), diagonal n-3 disjoi...
  • wjhshuai
  • wjhshuai
  • 2017年07月05日 15:10
  • 190

那些你不知道的流程图画法

泳道图是一种UML活动图,能够清晰体现出某个动作发生在哪个部门或者说此动作发生在哪个模块,是经常被使用的一种UML图。如果你身在企业中,是一位管理者的话,不仅要能看懂流程图,还需要会画才行,画流程图的...
  • mastermindmap
  • mastermindmap
  • 2017年12月15日 14:29
  • 65

WPF-24:绘制正多边形

一般来说绘制正N边形,使用Blend直接画出来就好。不过可能是博主受WInform影响比较大,比较喜欢使用画出来的图形。如果要绘制正N边形,前面的绘制五角星的公式可以通用的(http://blog.c...
  • yysyangyangyangshan
  • yysyangyangyangshan
  • 2013年09月26日 21:05
  • 3540
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:正多边形画法,圆的内接,外切正多边形画法。
举报原因:
原因补充:

(最多只允许输入30个字)