国产探花免费观看_亚洲丰满少妇自慰呻吟_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先排序

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 杭锦后旗| 巴彦淖尔市| 麦盖提县| 石屏县| 惠东县| 嘉兴市| 西贡区| 牙克石市| 阳谷县| 南京市| 冀州市| 轮台县| 黄陵县| 永兴县| 衡水市| 宣汉县| 扶余县| 沁源县| 兴安县| 鹤岗市| 周至县| 抚州市| 手游| 淳安县| 莱芜市| 云梦县| 岳阳县| 徐闻县| 玉溪市| 绵竹市| 湘潭市| 延吉市| 寿宁县| 棋牌| 万全县| 九台市| 广安市| 旬阳县| 林州市| 嘉鱼县| 铜山县|