资源简介
#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程序
评论
共有 条评论