计算机图形学实验报告 直线段的裁剪

直线段的裁剪
梦溪学林CaaaaView::CaaaaView()
{
    m_pntCount=0;
    xl=200;
    xr=600;
    yb=100;
    yt=350;
}
void MidBresenhamLine(CDC *pDC,int x0,int y0,int x1,int y1){
    int dx,dy,d,up,down,x,y;
    if(x0>x1){
        x=x1;x1=x0;x0=x;
        y=y1;y1=y0;y0=y;
    }
    x=x0;y=y0;
    dx=x1-x0;dy=y1-y0;
    d=dx-2*dy;
    up=2*x-2*y;down=-2*dy;
    while(x<=x1){
    pDC->SetPixel(x,y,355);
    x++;
    if(d<0){
        y++;
        d+=up;
    }
    else d+=down;
    }
}
int LBLineClipTest(float p,float q,float &umax,float &umin)
{
    float r=0.0;
    if(p<0.0){
        r=q/p;
    TRACE(_T("r=%.4f\n"),r);
        if(r>umin) 总酚return 0;
        else if(r>umax) umax=r;
    }
    else if(p>0.0){
        r=q/p;
    TRACE(_T("r=%.4f\n"),r);
        if(r<umax) return 0;
        else if(r<umin) umin=r;
    }
    else if(q<0.0) return 0;
   
    return 1;
}
void LBLineClip(CDC* pDC,float xl,float xr,float yb,float yt,float x1,float图灵机 y1,float x2,float y2)
{
    float umax,umin,deltax,deltay;
    deltax=x2-x1;  deltay=y2-y1; umax=0.0; umin=1.0;
    if( LBLineClipTest(-deltax,x1-xl,umax,umin)){
系统脱敏疗法案例        if( LBLineClipTest(deltax,xr-x1,umax,umin)){
            if( LBLineClipTest(-deltay,y1-yb,umax,umin)){
                if( LBLineClipTest(deltay,yt-y1,umax,umin)){
                    x1=int(x1+umax*deltax+0.5);
                    y1=int(y1+umax*deltay+0.5);
                    x2=int(x1+umin*deltax+0.5);
                    y2=int(y1+umin*deltay+0.5);
                }
                MidBresenhamLine(pDC,x1,y1,x2,y2);
运筹与管理            }
        }
    }
}
void CaaaaView::OnLButtonDown(UINT nFlags, CPoint point)
{
    //AfxMessageBox(_T("click"));
    m_pnts[m_pntCount]=point;
    m_pntCount++;
    if(m_pntCount>1)
    {
        CDC *pDC=GetDC();
       
        LBLineClip(pDC,xl,xr,yb,yt,m_pnts[m_pntCount-2].x,m_pnts[m_pntCount-2].y,m_pnts[m_pntCount-1].x,m_pnts[m_pntCount-1].y);
        ReleaseDC(pDC);
        m_pntCount=0;
    }
人参多糖    CView::OnLButtonDown(nFlags, point);
}

本文发布于:2024-09-22 06:41:37,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/231519.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:裁剪   疗法   运筹   多糖
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议