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

原创 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);
 }

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

OpenGL圆形绘制算法

Bresham算法 #include //Bresham法绘制圆形 void circle(int x,int y,int x0,int y0) { //绘制1/8圆和它的...
  • u014004602
  • u014004602
  • 2015-10-25 15:33:48
  • 939

OpenGL研究2.0 圆计算方法

在游戏中,经常有些地方涉及到一些圆的轨迹计算,比方一些转轴类的游戏,人物一般在角色转轴上面运动。这时,我们就要时刻计算角色的位置。分析一下,圆位置的一般算法。...
  • Dionysos_lai
  • Dionysos_lai
  • 2014-06-18 23:43:22
  • 1309

绘制任意圆及圆内正多边形

  • 2014年03月25日 22:31
  • 2.3MB
  • 下载

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

文章首发在oschina这个不是首发,但作者都是我一个人。这个是在上一篇费氏数列螺线画法的基础上改的所以注释有些奇怪,大家不要见怪哈 void CMyDlg::OnButton2() ...
  • zjq9931
  • zjq9931
  • 2015-02-08 00:11:39
  • 1540

autocad2014绘制矩形和正多边形的简单方法

AutoCAD2014最大改进在于增加了许多新特性,比如新增连接功能,有利于推动项目协作,加快工作流程;新增实景地图功能,将设计理念运用到真实环境,让用户更早感受到真实设计效果;新增win8触屏操作,...
  • maybela
  • maybela
  • 2015-08-11 21:49:10
  • 1967

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

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

内接圆性质1

  • seamanj
  • seamanj
  • 2016-07-31 01:02:42
  • 442

openGL绘制圆

const int n = 3; const GLfloat R = 0.5f; const GLfloat pi = 3.1415926536f; void display() { int i...
  • explore_world
  • explore_world
  • 2017-03-16 17:01:26
  • 4826

圆内接正多边形算pi的值面积

圆内接正多边形算pi的值面积前面通过周长计算过一次,现在从面积着手:先从内接正方形开始,然后扩展到八边形,16边形。。。通过找出规律,从而计算4边形时pi/4=2* { 1/(sqrt  2) } *...
  • chenbingchenbing
  • chenbingchenbing
  • 2011-05-09 09:39:00
  • 390

在OpenGL中绘制圆

#include #include const double PI = acos(-1.0); void myDisplay() { glClear(GL_COLOR_BUFFER_BIT);...
  • wyg1997
  • wyg1997
  • 2017-04-14 15:02:01
  • 903
收藏助手
不良信息举报
您举报文章:正多边形画法,圆的内接,外切正多边形画法。
举报原因:
原因补充:

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