信息发布软件,b2b软件,广告发布软件

标题: 谁与争峰C++圆形算法无其它编辑能比的上吧 [打印本页]

作者: 群发软件    时间: 2017-6-22 23:06
标题: 谁与争峰C++圆形算法无其它编辑能比的上吧

平时, 用惯了API、CDC和封装好的内部函数,关于画线,画圆这些东西都是信手拈来…

    最近学习计算机图形学,不得不深入内部研究一下底层算法…

    在这里贴几个代码分享一下!

    (这里只给出MFC的OnDraw函数)

    一、画线的三个算法

    1。DDA(数值微分)法:

    void CDDALineView::OnDraw(CDC* pDC)

    {

    CDDALineDoc* pDoc = GetDocument();

    ASSERT_VALID(pDoc);

    // TODO: add draw code for native data here

    int x,x0(200),y0(200),x1(500),y1(500);

    float dx,dy,y,k;

    dx=x1-x0;

    dy=y1-y0;

    k=dy/dx;

    y=y0;

    for(x=x0;x<=x1;x++)

    {

    pDC->SetPixel(x,(int)(y+0.5),RGB(255,0,0));

    y+=k;

    }

    }

    2.中点画线算法

    void CMidpointLineView::OnDraw(CDC* pDC)

    {

    CMidpointLineDoc* pDoc = GetDocument();

    ASSERT_VALID(pDoc);

    // TODO: add draw code for native data here

    int a,b,d1,d2,d,x,y;

    int x0(200),x1(500),y0(200),y1(500);

    a=y0-y1;

    b=x1-x0;

    d=2*a+b;

    d1=2*a;

    d2=2*(a+b);

    x=x0;

    y=y0;

    pDC->SetPixel(x,y,RGB(0,255,0));

    while(x<x1)

    {

    if(d<0)

    {

    x++;

    y++;

    d+=d2;

    }

    else

    {

    x++;

    d+=d1;

    }

    pDC->SetPixel(x,y,RGB(0,255,0));

    }

    }

    3。Bresenham算法:

    void CBresenhamline2View::OnDraw(CDC* pDC)

    {

    CBresenhamline2Doc* pDoc = GetDocument();

    ASSERT_VALID(pDoc);

    // TODO: add draw code for native data here

    int x0(200),y0(200),x1(500),y1(500);

    int x,y,dx,dy;

    dx=x1-x0;

    dy=y1-y0;

    int e=-dx;

    x=x0;

    y=y0;

    for(int i=0;i<=dx;i++)

    {

    pDC->SetPixel(x,y,RGB(0,0,255));

    x=x+1;

    e=e+2*dy;

    if(e>=0)

    {

    y++;

    e=e-2*dx;

    }

    }

    }

    二、中点画圆算法:

    void CMidPointCircleView::OnDraw(CDC* pDC)

    {

    CMidPointCircleDoc* pDoc = GetDocument();

    ASSERT_VALID(pDoc);

    // TODO: add draw code for native data here

    int r=100;            //半径

    int m(300),n(250);    //圆心坐标

    int x,y;

    float d;

    x=0;

    y=0+r;

    d=1.25-r;

    //中点画圆算法

    pDC->SetPixel(m+x,n+y,RGB(255,0,0));

    pDC->SetPixel(m+y,n+x,RGB(255,0,0));

    pDC->SetPixel(m-x,n+y,RGB(255,0,0));

    pDC->SetPixel(m+y,n-x,RGB(255,0,0));

    pDC->SetPixel(m+x,n-y,RGB(255,0,0));

    pDC->SetPixel(m-y,n+x,RGB(255,0,0));

    pDC->SetPixel(m-x,n-y,RGB(255,0,0));

    pDC->SetPixel(m-y,n-x,RGB(255,0,0));

    while(x<=y)

    {

    if(d<0)

    d+=2*x+3;

    else

    {

    d+=2*(x-y)+5;

    y--;

    }

    x++;

    pDC->SetPixel(m+x,n+y,RGB(255,0,0));

    pDC->SetPixel(m+y,n+x,RGB(255,0,0));

    pDC->SetPixel(m-x,n+y,RGB(255,0,0));

    pDC->SetPixel(m+y,n-x,RGB(255,0,0));

    pDC->SetPixel(m+x,n-y,RGB(255,0,0));

    pDC->SetPixel(m-y,n+x,RGB(255,0,0));

    pDC->SetPixel(m-x,n-y,RGB(255,0,0));

    pDC->SetPixel(m-y,n-x,RGB(255,0,0));

    }

    }

椭圆弧生成算法

  基本同圆弧算法,只是方程变得复杂F(x,y)=(bx)^2+(ay)^2-(ab)^2.

  对称性:4分对称,画第一象限

  分段依据:斜率为一点

谁与争峰C++圆形算法无其它编辑能比的上吧 b2b软件 谁与争峰C++圆形算法无其它编辑能比的上吧 b2b软件

  上段圆弧:

谁与争峰C++圆形算法无其它编辑能比的上吧 b2b软件
下段圆弧:
谁与争峰C++圆形算法无其它编辑能比的上吧 b2b软件
  【椭圆中点算法流程图】
谁与争峰C++圆形算法无其它编辑能比的上吧 b2b软件

作者: lalajie    时间: 2017-6-28 22:36
及时做出评价,系统默认好评!
作者: 我爱苏苏    时间: 2017-7-7 00:54
,制作的很精美,非常漂亮。相当满意
作者: huangge    时间: 2017-7-8 09:31
店主,速度很快,很满意,正好赶上我得活动,谢谢店主,这次活动赚钱了,再来设计,哈哈
作者: lnzhanghao    时间: 2017-7-11 18:38
我让为他们花不了多长时间。人品有问题。3500元没做成什么,就有多种理由,这也不行,哪也不行,我让为他们是做不来,给技术人丢人
作者: mmgg520    时间: 2017-7-13 05:44
模板操作简单方便,店家讲解详细,有详细的安装程序,卖家服务好,有问必答,而且都是第一时间给予协助,解决了很多问题,大家有需要就买这家就对了,很值得信任的卖家!合作非常愉快,下次还来
作者: loverun    时间: 2017-7-13 11:23
学习了,不错,讲的太有道理了
作者: 乱世扶稣    时间: 2017-7-14 13:46
源,很值哦
作者: 123    时间: 2017-7-14 13:50
人,解决问题超负责的!点32个赞
作者: cd0010    时间: 2017-7-19 07:58
值得好评
作者: qiaozong01    时间: 2017-7-20 09:45
,很有学习价值,听说好评給牛逼视频!来来来快发来
作者: 小白    时间: 2017-7-21 12:45
功能蛮齐全的,价格698也不高,找了好几间就觉得这家性价比最高了。客服的态度也不错,说以后还能继续提供技术支持。总之整体而言挺满意~
作者: q117971371    时间: 2017-7-22 00:54
平台做的很好,帮我申请号。。。我不懂都给我一一讲解,让我明白怎么操作,谢谢卖家。。谢谢客服和技术人员。。。




欢迎光临 信息发布软件,b2b软件,广告发布软件 (http://postbbs.com/) Powered by Discuz! X3.2