| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 946 人关注过本帖
标题:求助:中点画圆算法生成的圆边上为何有四条切线?
只看楼主 加入收藏
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
求助:中点画圆算法生成的圆边上为何有四条切线?
中点画圆算法,半径250,圆心(250,250),由中点在原点的同半径圆平移过来的!我并没有画线,为何生成的图中多了四条线,不解中???
程序代码:
#include <GL/glut.h>

void Circle(void)
{
    glColor3f(1.0,1.0,1.0);
   
    int p=1-250;
    int x=0,y=250;

    glBegin(GL_POINTS);  //画四个与轴的交点
    glVertex2i(250,500);
    glVertex2i(500,250);
    glVertex2i(250,0);
    glVertex2i(0,250);
    glEnd();

    for(int i=0;i<249;i++)
    {
        if(p<0)
        {
            x+=1;
            p+=2*x+1;
        }
        else
        {
            x+=1;
            y-=1;
            p+=2*x-2*y+1;
        }
        glBegin(GL_POINTS);  //画八个对称点
        glVertex2i(x+250,y+250);
        glVertex2i(-x+250,y+250);
        glVertex2i(x+250,-y+250);
        glVertex2i(-x+250,-y+250);
        glVertex2i(y+250,x+250);
        glVertex2i(-y+250,x+250);
        glVertex2i(y+250,-x+250);
        glVertex2i(-y+250,-x+250);
        glEnd();
    }
    glFlush();
}

void main(int argc,char** argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
    glutInitWindowPosition(100,100);
    glutInitWindowSize(600,600);
    glutCreateWindow("0810050225");

    glClearColor(0.0,0.0,0.0,0.0);
    glClear(GL_COLOR_BUFFER_BIT);
    glMatrixMode(GL_PROJECTION);
    gluOrtho2D(0.0,550.0,0.0,550.0);

    glutDisplayFunc(Circle);
    glutMainLoop();
}
运行结果如下图(多了四条线):
图片附件: 游客没有浏览图片的权限,请 登录注册



[ 本帖最后由 qq1023569223 于 2011-3-24 13:00 编辑 ]
搜索更多相关主题的帖子: color 
2011-03-24 12:58
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:20 
for(int i=0;i<249;i++)

你是画了250个点组成的线

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2011-03-27 15:37
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
程序代码:
#include <GL/glut.h>
/*中点算法,四分圆*/
void Circle(void)
{
    glColor3f(1.0,1.0,1.0);
  
    int p=1-250;
    int x=0,y=250;

    glBegin(GL_POINTS);  //画四个与轴的交点
    glVertex2i(250,500);
    glVertex2i(500,250);
    glVertex2i(250,0);
    glVertex2i(0,250);
    glEnd();

    for(int i=0;i<249;i++)
    {
        if(p<0)
        {
            x+=1;
            p+=2*x+1;
        }
        else
        {
            x+=1;
            y-=1;
            p+=2*x-2*y+1;
        }
        glBegin(GL_POINTS);  //画四个个对称点
        glVertex2i(x+250,y+250);
        glVertex2i(-x+250,y+250);
        glVertex2i(x+250,-y+250);
        glVertex2i(-x+250,-y+250);
        /*glVertex2i(y+250,x+250);
        glVertex2i(-y+250,x+250);
        glVertex2i(y+250,-x+250);
        glVertex2i(-y+250,-x+250);*/
        glEnd();
    }

    glFlush();
}

void main(int argc,char** argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
    glutInitWindowPosition(100,100);
    glutInitWindowSize(600,600);
    glutCreateWindow("0810050225");

    glClearColor(0.0,0.0,0.0,0.0);
    glClear(GL_COLOR_BUFFER_BIT);
    glMatrixMode(GL_PROJECTION);
    gluOrtho2D(0.0,550.0,0.0,550.0);

    glutDisplayFunc(Circle);
    glutMainLoop();
}
发现了一个错误,我写的是四分画圆,写成八分了。可是这样还是不对,到底哪里错了哟???
图片附件: 游客没有浏览图片的权限,请 登录注册

   唯实惟新 至诚致志
2011-03-28 00:09
快速回复:求助:中点画圆算法生成的圆边上为何有四条切线?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030698 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved