html5中文学习网

您的位置: 首页 > 网站及特效实例 > jquery特效 » 正文

C++多边形扫描转换算法_编程语言综合

[ ] 已经帮助:人解决问题

 最近学习计算机图形学,写了个多边形扫描转换算法,贴出来分享一下;4JkHTML5中文学习网 - HTML5先行者学习网

  MFC还不是太明白,主要还是使用OnDraw函数...4JkHTML5中文学习网 - HTML5先行者学习网

  大家多指教...4JkHTML5中文学习网 - HTML5先行者学习网

void CPolyFillView::OnDraw(CDC* pDC)4JkHTML5中文学习网 - HTML5先行者学习网

{4JkHTML5中文学习网 - HTML5先行者学习网

CPolyFillDoc* pDoc = GetDocument();4JkHTML5中文学习网 - HTML5先行者学习网

ASSERT_VALID(pDoc);4JkHTML5中文学习网 - HTML5先行者学习网

// TODO: add draw code for native data here4JkHTML5中文学习网 - HTML5先行者学习网

const int POINTNUM=6; //多边形点数.4JkHTML5中文学习网 - HTML5先行者学习网

/定义结构体用于活性边表AET和新边表NET/4JkHTML5中文学习网 - HTML5先行者学习网

typedef struct XET4JkHTML5中文学习网 - HTML5先行者学习网

{4JkHTML5中文学习网 - HTML5先行者学习网

float x;4JkHTML5中文学习网 - HTML5先行者学习网

float dx,ymax;4JkHTML5中文学习网 - HTML5先行者学习网

XET* next;4JkHTML5中文学习网 - HTML5先行者学习网

}AET,NET;4JkHTML5中文学习网 - HTML5先行者学习网

/定义点结构体point*/4JkHTML5中文学习网 - HTML5先行者学习网

struct point4JkHTML5中文学习网 - HTML5先行者学习网

{4JkHTML5中文学习网 - HTML5先行者学习网

float x;4JkHTML5中文学习网 - HTML5先行者学习网

float y;4JkHTML5中文学习网 - HTML5先行者学习网

}polypoint[POINTNUM]={250,50,550,150,550,400,250,250,100,350,100,100};//多边形顶点4JkHTML5中文学习网 - HTML5先行者学习网

//mypoint[POINTNUM]={100,100,200,100,200,200,100,200};//正方形4JkHTML5中文学习网 - HTML5先行者学习网

/计算最高点的y坐标(扫描到此结束)**/4JkHTML5中文学习网 - HTML5先行者学习网

int MaxY=0;4JkHTML5中文学习网 - HTML5先行者学习网

int i;4JkHTML5中文学习网 - HTML5先行者学习网

for(i=0;i<POINTNUM;i++)4JkHTML5中文学习网 - HTML5先行者学习网

if(polypoint[i].y>MaxY)4JkHTML5中文学习网 - HTML5先行者学习网

MaxY=polypoint[i].y;4JkHTML5中文学习网 - HTML5先行者学习网

/*初始化AET表/4JkHTML5中文学习网 - HTML5先行者学习网

AET *pAET=new AET;4JkHTML5中文学习网 - HTML5先行者学习网

pAET->next=NULL;4JkHTML5中文学习网 - HTML5先行者学习网

/初始化NET表*/4JkHTML5中文学习网 - HTML5先行者学习网

NET *pNET[1024];4JkHTML5中文学习网 - HTML5先行者学习网

for(i=0;i<=MaxY;i++)4JkHTML5中文学习网 - HTML5先行者学习网

{4JkHTML5中文学习网 - HTML5先行者学习网

pNET[i]=new NET;4JkHTML5中文学习网 - HTML5先行者学习网

pNET[i]->next=NULL;4JkHTML5中文学习网 - HTML5先行者学习网

}4JkHTML5中文学习网 - HTML5先行者学习网

/扫描并建立NET表*/4JkHTML5中文学习网 - HTML5先行者学习网

for(i=0;i<=MaxY;i++)4JkHTML5中文学习网 - HTML5先行者学习网

{4JkHTML5中文学习网 - HTML5先行者学习网

for(int j=0;j<POINTNUM;j++)4JkHTML5中文学习网 - HTML5先行者学习网

if(polypoint[j].y==i)4JkHTML5中文学习网 - HTML5先行者学习网

{4JkHTML5中文学习网 - HTML5先行者学习网

if(polypoint[(j-1+POINTNUM)%POINTNUM].y>polypoint[j].y)4JkHTML5中文学习网 - HTML5先行者学习网

{4JkHTML5中文学习网 - HTML5先行者学习网

NET *p=new NET;4JkHTML5中文学习网 - HTML5先行者学习网

p->x=polypoint[j].x;4JkHTML5中文学习网 - HTML5先行者学习网

p->ymax=polypoint[(j-1+POINTNUM)%POINTNUM].y;4JkHTML5中文学习网 - HTML5先行者学习网

p->dx=(polypoint[(j-1+POINTNUM)%POINTNUM].x-polypoint[j].x)/(polypoint[(j-1+POINTNUM)%POINTNUM].y-polypoint[j].y);4JkHTML5中文学习网 - HTML5先行者学习网

p->next=pNET[i]->next;4JkHTML5中文学习网 - HTML5先行者学习网

pNET[i]->next=p;4JkHTML5中文学习网 - HTML5先行者学习网

}4JkHTML5中文学习网 - HTML5先行者学习网

if(polypoint[(j+1+POINTNUM)%POINTNUM].y>polypoint[j].y)4JkHTML5中文学习网 - HTML5先行者学习网

{4JkHTML5中文学习网 - HTML5先行者学习网

NET *p=new NET;4JkHTML5中文学习网 - HTML5先行者学习网

p->x=polypoint[j].x;4JkHTML5中文学习网 - HTML5先行者学习网

p->ymax=polypoint[(j+1+POINTNUM)%POINTNUM].y;4JkHTML5中文学习网 - HTML5先行者学习网

p->dx=(polypoint[(j+1+POINTNUM)%POINTNUM].x-polypoint[j].x)/(polypoint[(j+1+POINTNUM)%POINTNUM].y-polypoint[j].y);4JkHTML5中文学习网 - HTML5先行者学习网

p->next=pNET[i]->next;4JkHTML5中文学习网 - HTML5先行者学习网

pNET[i]->next=p;4JkHTML5中文学习网 - HTML5先行者学习网

}4JkHTML5中文学习网 - HTML5先行者学习网

}4JkHTML5中文学习网 - HTML5先行者学习网

}4JkHTML5中文学习网 - HTML5先行者学习网

/建立并更新活性边表AET/4JkHTML5中文学习网 - HTML5先行者学习网

for(i=0;i<=MaxY;i++)4JkHTML5中文学习网 - HTML5先行者学习网

{4JkHTML5中文学习网 - HTML5先行者学习网

//计算新的交点x,更新AET/4JkHTML5中文学习网 - HTML5先行者学习网

NET *p=pAET->next;4JkHTML5中文学习网 - HTML5先行者学习网

while(p)4JkHTML5中文学习网 - HTML5先行者学习网

{4JkHTML5中文学习网 - HTML5先行者学习网

p->x=p->x + p->dx;4JkHTML5中文学习网 - HTML5先行者学习网

p=p->next;4JkHTML5中文学习网 - HTML5先行者学习网

}4JkHTML5中文学习网 - HTML5先行者学习网

//更新后新AET先排序4JkHTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助