资源简介
点是否在多边形内判断的C语言代码,有2维及3维两种情况的判断, 请注意:如果你决定使用其中某个函数,请将它拷出来,每个函数都能用,对应于不同的算法,请看说明,最后一个函数为三维情况。
代码片段和文件信息
#define MIN(xy) (x < y ? x : y)
#define MAX(xy) (x > y ? x : y)
//The following C function returns INSIDE or OUTSIDE indicating the status of a point P with respect to a polygon with N points.
#define INSIDE 0
#define OUTSIDE 1
typedef struct {
double xy;
} Point;
int InsidePolygon(Point *polygonint NPoint p)
{
int counter = 0;
int i;
double xinters;
Point p1p2;
p1 = polygon[0];
for (i=1;i<=N;i++) {
p2 = polygon[i % N];
if (p.y > MIN(p1.yp2.y)) {
if (p.y <= MAX(p1.yp2.y)) {
if (p.x <= MAX(p1.xp2.x)) {
if (p1.y != p2.y) {
xinters = (p.y-p1.y)*(p2.x-p1.x)/(p2.y-p1.y)+p1.x;
if (p1.x == p2.x || p.x <= xinters)
counter++;
}
}
}
}
p1 = p2;
}
if (counter % 2 == 0)
return(OUTSIDE);
else
return(INSIDE);
}
//The following code is by Randolph Franklin it returns 1 for interior points and 0 for exterior points.
int pnpoly(int npol float *xp float *yp float x float y)
{
int i j c = 0;
for (i = 0 j = npol-1; i < npol; j = i++) {
if ((((yp[i] <= y) && (y < yp[j])) ||
((yp[j] <= y) && (y < yp[i]))) &&
(x < (xp[j] - xp[i]) * (y - yp[i]) / (yp[j] - yp[i]) + xp[i]))
c = !c;
}
return c;
}
//The inside/outside test might then be defined in C as
typedef struct {
int hv;
} Point;
int InsidePolygon(Point *polygonint nPoint p)
{
int i;
double angle=0;
Point p1p2;
for (i=0;i p1.h = polygon[i].h - p.h;
p1.v = polygon[i].v - p.v;
p2.h = polygon[(i+1)%n].h - p.h;
p2.v = polygon[(i+1)%n].v - p.v;
angle += Angle2D(p1.hp1.vp2.hp2.v);
}
if (AB
- 上一篇:mcc插件安装指引
- 下一篇:数值分析三次样条两种边界matlab代码.rar
相关资源
- C++中头文件与源文件的作用详解
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
- 电子时钟 有C语言程序,PROTEUS仿真图
- 尚观培训linux许巍老师关于c语言的课
- 算符优先语法分析器(C语言编写)
- 基于C语言的密码锁程序
评论
共有 条评论