資源簡介
#include ,
line(left,top,right,top);
line(left,bottom,right,bottom);
line(left,top,left,bottom);
line(right,top,right,bottom); //繪制邊框和裁剪圖形

代碼片段和文件信息
#include?
#include?
void?main()
{
int?p[10][2]q[20][2]niktemp_xtemp_y;????/*p[][0]表示x坐標?p[][1]表示y坐標*/
int?left=200right=400bottom=100top=200;
int?gdriver=DETECTgmode;
printf(“請輸入帶切割多邊形的數據!\n“);
printf(“帶切割多邊形的定點數為:“);
scanf(“%d“&n);
for(i=0;i {
printf(“請輸入X(%d)的值:“i+1);
scanf(“%d“&p[i][0]);
printf(“請輸入Y(%d)的值:“i+1);
scanf(“%d“&p[i][1]);
}
p[n][0]=p[0][0];
p[n][1]=p[0][1];
initgraph(&gdriver&gmode““);
setcolor(BLUE);
for(i=0;i {
line(p[i][0]p[i][1]p[i+1][0]p[i+1][1]);
}
getchar();
setcolor(WHITE);
line(lefttoprighttop);
line(leftbottomrightbottom);
line(lefttopleftbottom);
line(righttoprightbottom); //繪制邊框和裁剪圖形
for(i=0k=0;i { //左邊切割
if(p[i][0]=left)
{
temp_x=left;
temp_y=p[i][1]+((left-p[i][0])*(p[i+1][1]-p[i][1])/(p[i+1][0]-p[i][0]));
q[k][0]=temp_x;
q[k][1]=temp_y;
k++;
q[k][0]=p[i+1][0];
q[k][1]=p[i+1][1];
k++;
}
else?if(p[i][0]>=left?&&?p[i+1][0]>=left)
{
q[k][0]=p[i+1][0];
q[k][1]=p[i+1][1];
k++;
}
else?if(p[i][0]>=left?&&?p[i+1][0] {
temp_x=left;
temp_y=p[i][1]+((left-p[i][0])*(p[i+1][1]-p[i][1])/(p[i+1][0]-p[i][0]));
q[k][0]=temp_x;
q[k][1]=temp_y;
k++;
}
}
n=k;
for(i=0;i {
p[i][0]=q[i][0];
p[i][1]=q[i][1];
}
p[n][0]=q[0][0];
p[n][1]=q[0][1];
for(i=0k=0;i { //頂邊切割
if(p[i][1]>top?&&?p[i+1][1]<=top)
{
temp_x=p[i][0]+((top-p[i][1])*(p[i+1][0]-p[i][0])/(p[i+1][1]-p[i][1]));
temp_y=top;
q[k][0]=temp_x;
q[k][1]=temp_y;
k++;
q[k][0]=p[i+1][0];
q[k][1]=p[i+1][1];
k++;
}
else?if(p[i][1]<=top?&&?p[i+1][1]<=top)
{
q[k][0]=p[i+1][0];
q[k][1]=p[i+1][1];
k++;
}
else?if(p[i][1]<=top?&&?p[i+1][1]>top)
{
temp_x=p[i][0]+((top-p[i][1])*(p[i+1][0]-p[i][0])/(p[i+1][1]-p[i][1]));
temp_y=top;
q[k][0]=temp_x;
q[k][1]=temp_y;
k++;
}
}
n=k;
for(i=0;i {
p[i][0]=q[i][0];
p[i][1]=q[i][1];
}
p[n][0]=q[0][0];
p[n][1]=q[0][1];
for(i=0k=0;i { //右邊切割
if(p[i][0]>right?&&?p[i+1][0]<=right)
{
temp_x=right;
temp_y=p[i][1]+((right-p[i][0])*(p[i+1][1]-p[i][1])/(p[i+1][0]-p[i][0]));
q[k][0]=temp_x;
q[k][1]=temp_y;
k++;
q[k][0]=p[i+1][0];
q[k][1]=p[i+1][1];
k++;
}
else?if(p[i][0]<=right?&&?p[i+1][0]<=right)
{
q[k][0]=p[i+1][0];
q[k][1]=p[i+1][1];
k++;
}
else?if(p[i][0]<=right?&&?p[i+1][0]>right)
{
temp_x=right;
temp_y=p[i][1]+((right-p[i][0])*(p[i+1][1]-p[i][1])/(p[i+1][0]-p[i][0]));
q[k][0]=temp_x;
q[k][1]=temp_y;
k++;
}
}
n=k;
for(i=0;i {
p[i][0]=q[i][0];
p[i][1]=q[i][1];
}
p[n][0]=q[0][0];
p[n][1]=q[0][1];
for(i=0k=0;i { //底邊切割
if(p[i][1]=bottom)
{
temp_x=p[i][0]+(
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3847??2010-10-29?13:22??多邊形裁剪\多邊形裁剪.cpp
?????文件???????3451??2010-10-29?12:49??多邊形裁剪\多邊形裁剪.dsp
?????文件????????528??2010-10-29?12:50??多邊形裁剪\多邊形裁剪.dsw
?????文件??????50176??2010-10-29?12:50??多邊形裁剪\多邊形裁剪.ncb
?????文件??????48640??2010-10-29?12:50??多邊形裁剪\多邊形裁剪.opt
?????文件????????254??2010-10-29?12:49??多邊形裁剪\多邊形裁剪.plg
?????目錄??????????0??2011-01-14?00:35??多邊形裁剪
-----------?---------??----------?-----??----
???????????????106896????????????????????7
- 上一篇:8款非常好看的css表格
- 下一篇:線性回歸的fortran程序
評論
共有 條評論