• 大小: 612KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-01-08
  • 语言: C/C++
  • 标签: vc6.0    多边形  

资源简介

这是一个水平/垂直交叉点数判别法判断点是否在凹(凸)多边形内部(适用于任意多边形包括凹凸边形) 注意到如果从P作水平向左的射线的话,如果P在多边形内部,那么这条射线与多边形的交点必为奇数,如果P在多边形外部,则交点个数必为偶数(0也在内)。所以,我们可以顺序考虑多边形的每条边,求出交点的总个数。还有一些特殊情况要考虑,具体见代码。程序运行后,首先输入多边形顶点个数,然后输入顶点坐标xy值,回车确定后。yes表示点在多边形内部。反之,在外部。

资源截图

代码片段和文件信息


//offset为多边形坐标上限   
//on_edge表示点在多边形边上时的返回值   
#include   
#include   
#include   
#include   
#include   
#include   
using namespace std;  

const int offset=1000;  
const double eps=1e-8;  

struct Point

    double xy;  
}p[105]; 
 
double cross(Point piPoint pjPoint pk) //改为
{ // (pipj)X(pipk) 
//输入:三个点的横、纵坐标
//输出:点k在线段ij的哪一侧

    return (pj.x-pi.x)*(pk.y-pi.y)-(pj.y-pi.y)*(pk.x-pi.x);  
}  
int InPolygon(const Point *arrconst int &lenconst Point &pint on_edge=1)
{  
//输入:凹或凸多边形区域端点的坐标arr[i]
//输入:多边形端点个数
//输入:需要判定的点P
//输出:返回值为1:点在多边形内;返回值为0:点在多边形外


Point q;  
int i=0counter;  
while(i {  
q.x=rand()+offset;//随机取一个足够远的点q   
q.y=rand()+offset;//以p为起点q为终点做射线L   
f

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1831  2013-10-22 12:16  水平垂直交叉点数判别法(适用于任意多边形包括凹凸边形)\22.cpp

     文件       3353  2013-10-22 11:33  水平垂直交叉点数判别法(适用于任意多边形包括凹凸边形)\22.dsp

     文件        512  2013-10-22 11:35  水平垂直交叉点数判别法(适用于任意多边形包括凹凸边形)\22.dsw

     文件      41984  2013-11-12 21:20  水平垂直交叉点数判别法(适用于任意多边形包括凹凸边形)\22.ncb

     文件      54784  2013-11-12 21:20  水平垂直交叉点数判别法(适用于任意多边形包括凹凸边形)\22.opt

     文件       1120  2013-11-12 21:17  水平垂直交叉点数判别法(适用于任意多边形包括凹凸边形)\22.plg

     文件     278608  2013-11-12 21:17  水平垂直交叉点数判别法(适用于任意多边形包括凹凸边形)\Debug\22.exe

     文件     387820  2013-11-12 21:17  水平垂直交叉点数判别法(适用于任意多边形包括凹凸边形)\Debug\22.ilk

     文件      15401  2013-11-12 21:17  水平垂直交叉点数判别法(适用于任意多边形包括凹凸边形)\Debug\22.obj

     文件    2013816  2013-11-12 21:17  水平垂直交叉点数判别法(适用于任意多边形包括凹凸边形)\Debug\22.pch

     文件     590848  2013-11-12 21:17  水平垂直交叉点数判别法(适用于任意多边形包括凹凸边形)\Debug\22.pdb

     文件      74752  2013-11-12 21:17  水平垂直交叉点数判别法(适用于任意多边形包括凹凸边形)\Debug\vc60.idb

     文件     102400  2013-11-12 21:17  水平垂直交叉点数判别法(适用于任意多边形包括凹凸边形)\Debug\vc60.pdb

     目录          0  2013-11-12 21:21  水平垂直交叉点数判别法(适用于任意多边形包括凹凸边形)\Debug

     目录          0  2013-11-12 21:21  水平垂直交叉点数判别法(适用于任意多边形包括凹凸边形)

----------- ---------  ---------- -----  ----

              3567229                    15


评论

共有 条评论