资源简介
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个文件信息
相关资源
- VTK体绘制裁剪_Cropping技术
- Cohen-Sutherland直线段的裁剪算法 直线段
- 图形学多边形裁剪绘制实验
- TTF字体库裁剪&TTC转TTF字体工具
- 将图集变成小图片导出
- 视频批量裁剪
- 直线的四种裁剪算法
- 图形学经典试验代码1.三维变换2.实时
- 2 纪荣嵘-紧致化计算机视觉分析系统
- 图集分割裁剪工具
- 图片批量裁剪器(精华版) v6.0.rar
- delphi实现裁剪图片并上传至服务器
- 计算机图形学实验.zip
- Landsat8拼接与裁剪代码IDL
- 经典Linux系统裁剪指南
- 编程实现中点分割裁剪算法,显示裁
- Cohen-Sutherland算法
- 计算机图形学裁剪算法
- arcmap 批量裁剪
- idl矢量批处理裁剪工具
- 计算机图形学实现多边形裁剪
- 计算机图形学-基于weiler-atherton算法的
- Arcgis批量裁剪
- liang barsky裁剪算法实现 以及运行exe
- IDL实现矢量边界裁剪
- 计算机图形学,内含DDA画直线,画圆
- 利用shapefile对栅格图像进行裁剪
- zw_-基于weiler-atherton算法的多边形裁剪
- 用ARCGIS对地形图的裁剪
- Cohen_Sutherland裁剪算法
评论
共有 条评论