資源簡介
Weiler-Athenton裁剪算法的實現,按enter鍵對圖形進行裁剪

代碼片段和文件信息
#include?“stdlib.h“
#include?
#include?“windows.h“
#include? //?Header?File?For?The?OpenGL32?Library
#include? //?Header?File?For?The?GLu32?Library
#include? //?Header?File?For?The?Glaux?Library
#include? //?Header?File?For?The?OpenGL32?tools?Library
#include?
using?namespace?std;
#define?SCREEN_POINT?4
#define?POLYGON_POINT?6
struct?point
{
double?x;
double?y;
int?flag;??//0為頂點,1為入點,-1為出點
};
struct?node
{
point?p;
int?flag;???//是否已被跟蹤
node*?next;
node*?same;??//指向另一個多邊形定點表中的相同交點
};
int?if_cut=0;
point?polygon[6];
point?screen[4];
void?insert(node*?&hpoint?p)
{
node*?n=(node*)malloc(sizeof(node));
n->p=p;
n->same=NULL;
n->next=NULL;
if(h==NULL)
{
h=n;
}
else
{
node?*q=h;
while(q->next!=NULL)
{
q=q->next;
}
q->next=n;
}
}
void?insert_list(node*?&screenlistnode*?&polygonlistpoint?ppoint?p1point?p2point?q1point?q2)
{
node*?n_polygon=(node*)malloc(sizeof(node));
n_polygon->p=p;
n_polygon->next=NULL;
n_polygon->flag=0;
node*?n_screen=(node*)malloc(sizeof(node));
n_screen->p=p;
n_screen->next=NULL;
n_screen->flag=0;
//雙向指針
n_polygon->same=n_screen;
n_screen->same=n_polygon;
//插入主多邊形頂點表
node?*n_p1;???//主多邊形頂點
node?*n_p2;???
for(n_p1=polygonlist;n_p1!=NULL;n_p1=n_p1->next)
{
if(n_p1->p.x==p1.x?&&?n_p1->p.y==p1.y?&&?n_p1->p.flag==p1.flag)
{
break;
}
}
for(n_p2=n_p1;n_p2!=NULL;n_p2=n_p2->next)
{
if(n_p2->p.x==p2.x?&&?n_p2->p.y==p2.y?&&?n_p2->p.flag==p2.flag)???
break;
}
if(n_p1->next?==?n_p2)
{
n_polygon->next=n_p2;
n_p1->next=n_polygon;
}
else
{
int?flag;
if(p1.x {
flag=1;
}
else
{
flag=0;
}
node?*q=n_p1;
while(q->next!=n_p2)
{
if(flag==1)
{
if(q->next->p.x>p.x)
{
n_polygon->next=q->next;
q->next=n_polygon;
break;
}
}
else
{
if(q->next->p.x {
n_polygon->next=q->next;
q->next=n_polygon;
break;
}
}
q=q->next;
}
if(q->next==n_p2)
{
n_polygon->next=q->next;
q->next=n_polygon;
}
}
//插入裁剪多邊形頂點表
node*?n_q1;
node*?n_q2;
for(n_q1=screenlist;n_q1!=NULL;n_q1=n_q1->next)
{
if(n_q1->p.x==q1.x?&&?n_q1->p.y==q1.y?&&?n_q1->p.flag==q1.flag)???
break;
}
for(n_q2=n_q1;n_q2!=NULL;n_q2=n_q2->next)
{
if(n_q2->p.x==q2.x?&&?n_q2->p.y==q2.y?&&?n_q2->p.flag==q2.flag)???
break;
}
if(n_q1->next?==?n_q2)
{
n_screen->next=n_q2;
n_q1->next=n_screen;
}
else
{
int?flag;
if(q1.x==q2.x)
{
if(q1.y flag=1;??????//左
else?
flag=2;??????//右
}
else
{
if(q1.x flag=3;??????//上
else
flag=4;??????//下
}
node?*q=n_q1;
while(q->next!=n_q2)
{
if(flag==1)
{
if(q->next->p.y>p.y)
{
n_screen->next=q->next;
q->next=n_s
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-05-21?13:58??lab4\
?????目錄???????????0??2015-05-13?22:32??lab4\Debug\
?????文件???????43008??2015-05-13?22:58??lab4\Debug\lab4.exe
?????文件??????311556??2015-05-13?22:58??lab4\Debug\lab4.ilk
?????文件??????568320??2015-05-13?22:58??lab4\Debug\lab4.pdb
?????目錄???????????0??2015-05-07?13:13??lab4\lab4\
?????文件????????3210??2015-05-07?18:23??lab4\lab4.psess
?????文件????28901376??2015-05-13?23:12??lab4\lab4.sdf
?????文件?????????974??2015-05-07?18:05??lab4\lab4.sln
?????文件???????20480??2015-05-13?23:12??lab4\lab4.v11.suo
?????目錄???????????0??2015-05-13?22:58??lab4\lab4\Debug\
?????文件?????????526??2015-05-13?22:58??lab4\lab4\Debug\cl.command.1.tlog
?????文件???????18428??2015-05-13?22:58??lab4\lab4\Debug\CL.read.1.tlog
?????文件?????????210??2015-05-13?22:58??lab4\lab4\Debug\CL.write.1.tlog
?????文件??????????58??2015-05-13?22:58??lab4\lab4\Debug\lab4.lastbuildstate
?????文件????????1220??2015-05-13?22:58??lab4\lab4\Debug\lab4.log
?????文件???????53026??2015-05-13?22:58??lab4\lab4\Debug\lab4.obj
?????文件???????????2??2015-05-13?22:58??lab4\lab4\Debug\li
?????文件???????????2??2015-05-13?22:58??lab4\lab4\Debug\li
?????文件???????????2??2015-05-13?22:58??lab4\lab4\Debug\li
?????文件???????????2??2015-05-13?22:58??lab4\lab4\Debug\li
?????文件???????????2??2015-05-13?22:58??lab4\lab4\Debug\li
?????文件???????????2??2015-05-13?22:58??lab4\lab4\Debug\li
?????文件???????????2??2015-05-13?22:58??lab4\lab4\Debug\li
?????文件???????????2??2015-05-13?22:58??lab4\lab4\Debug\li
?????文件???????????2??2015-05-13?22:58??lab4\lab4\Debug\li
?????文件???????????2??2015-05-13?22:58??lab4\lab4\Debug\li
?????文件???????????2??2015-05-13?22:58??lab4\lab4\Debug\li
?????文件???????????2??2015-05-13?22:58??lab4\lab4\Debug\li
?????文件???????????2??2015-05-13?22:58??lab4\lab4\Debug\li
?????文件???????????2??2015-05-13?22:58??lab4\lab4\Debug\li
............此處省略22個文件信息
評論
共有 條評論