⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 b样条.txt

📁 图形学B样条曲线代码
💻 TXT
字号:
//二次B样条曲线
void CMyFrame::DrawBSpline2(CPaintDC *dc)
{
	int i;
	double j,t,k,p,q,p0,p1,p2,q0,q1,q2;
        k=1/float(ptNum);
	for(i=0;i<ptNum-2;i++)
	{
        
        p0=(pt[i].x+pt[i+1].x)/2.0;
        p1=pt[i+1].x-pt[i].x;
        p2=(pt[i].x-2*pt[i+1].x+pt[i+2].x)/2.0;
        q0=(pt[i].y+pt[i+1].y)/2.0;
        q1=pt[i+1].y-pt[i].y;
        q2=(pt[i].y-2*pt[i+1].y+pt[i+2].y)/2.0;
        


        for(j=0;j<ptNum;j++)
        {
           t=j*k;
           p=p0+p1*t+p2*t*t;
           q=q0+q1*t+q2*t*t;
           if(t>0)
           dc->LineTo(int(p),int(q)) ;
           dc->MoveTo(int(p),int(q)) ;
         }
	}

}


/* 画3次B样条曲线 */
void CMyFrame::DrawBSpline3(CPaintDC *dc)
{
	
	int i;
	double j,t,k,p,q,p0,p1,p2,p3,q0,q1,q2,q3;
        k=1/float(ptNum);
	for(i=0;i<ptNum-3;i++)
	{
        
        p0=(pt[i].x+4*pt[i+1].x+pt[i+2].x)/6.0;
        p1=(-3*pt[i].x+3*pt[i+2].x)/6.0;
        p2=(3*pt[i].x-6*pt[i+1].x+3*pt[i+2].x)/6.0;
        p3=-(pt[i].x-3*pt[i+1].x+3*pt[i+2].x-pt[i+3].x)/6.0;
        q0=(pt[i].y+4*pt[i+1].y+pt[i+2].y)/6.0;
        q1=(-3*pt[i].y+3*pt[i+2].y)/6.0;
        q2=(3*pt[i].y-6*pt[i+1].y+3*pt[i+2].y)/6.0;
        q3=-(pt[i].y-3*pt[i+1].y+3*pt[i+2].y-pt[i+3].y)/6.0;


        for(j=0;j<ptNum;j++)
        {
           t=j*k;
           p=p0+p1*t+p2*t*t+p3*t*t*t;
           q=q0+q1*t+q2*t*t+q3*t*t*t;
           if(t>0)
           dc->LineTo(int(p),int(q)) ;
           dc->MoveTo(int(p),int(q)) ;
         }
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -