国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++多邊形掃描轉換算法

2020-05-23 14:24:44
字體:
來源:轉載
供稿:網友

最近學習計算機圖形學,寫了個多邊形掃描轉換算法,貼出來分享一下;

  MFC還不是太明白,主要還是使用OnDraw函數...

  大家多指教...

void CPolyFillView::OnDraw(CDC* pDC)

{

CPolyFillDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

const int POINTNUM=6; //多邊形點數.

/定義結構體用于活性邊表AET和新邊表NET/

typedef struct XET

{

float x;

float dx,ymax;

XET* next;

}AET,NET;

/定義點結構體point*/

struct point

{

float x;

float y;

}polypoint[POINTNUM]={250,50,550,150,550,400,250,250,100,350,100,100};//多邊形頂點

//mypoint[POINTNUM]={100,100,200,100,200,200,100,200};//正方形

/計算最高點的y坐標(掃描到此結束)**/

int MaxY=0;

int i;

for(i=0;i<POINTNUM;i++)

if(polypoint[i].y>MaxY)

MaxY=polypoint[i].y;

/*初始化AET表/

AET *pAET=new AET;

pAET->next=NULL;

/初始化NET表*/

NET *pNET[1024];

 

for(i=0;i<=MaxY;i++)

{

pNET[i]=new NET;

pNET[i]->next=NULL;

}

/掃描并建立NET表*/

for(i=0;i<=MaxY;i++)

{

for(int j=0;j<POINTNUM;j++)

if(polypoint[j].y==i)

{

if(polypoint[(j-1+POINTNUM)%POINTNUM].y>polypoint[j].y)

{

NET *p=new NET;

p->x=polypoint[j].x;

p->ymax=polypoint[(j-1+POINTNUM)%POINTNUM].y;

p->dx=(polypoint[(j-1+POINTNUM)%POINTNUM].x-polypoint[j].x)/(polypoint[(j-1+POINTNUM)%POINTNUM].y-polypoint[j].y);

p->next=pNET[i]->next;

pNET[i]->next=p;

}

if(polypoint[(j+1+POINTNUM)%POINTNUM].y>polypoint[j].y)

{

NET *p=new NET;

p->x=polypoint[j].x;

p->ymax=polypoint[(j+1+POINTNUM)%POINTNUM].y;

p->dx=(polypoint[(j+1+POINTNUM)%POINTNUM].x-polypoint[j].x)/(polypoint[(j+1+POINTNUM)%POINTNUM].y-polypoint[j].y);

p->next=pNET[i]->next;

pNET[i]->next=p;

}

}

}

/建立并更新活性邊表AET/

for(i=0;i<=MaxY;i++)

{

//計算新的交點x,更新AET/

NET *p=pAET->next;

while(p)

{

p->x=p->x + p->dx;

p=p->next;

}

//更新后新AET先排序

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 微博| 九台市| 江陵县| 普格县| 稷山县| 中西区| 彰武县| 陆良县| 长寿区| 垣曲县| 迁西县| 多伦县| 友谊县| 蒙阴县| 唐河县| 漳州市| 芜湖县| 武邑县| 青铜峡市| 涿鹿县| 常熟市| 莫力| 永春县| 高雄市| 苏尼特左旗| 淮滨县| 日喀则市| 城口县| 陆丰市| 临沧市| 蒙自县| 小金县| 广安市| 资中县| 鹤山市| 普兰店市| 民乐县| 澄迈县| 葫芦岛市| 卫辉市| 綦江县|