没有合适的资源?快使用搜索试试~ 我知道了~
判断点在多边形内算法javascript
5星 · 超过95%的资源 需积分: 49 49 下载量 92 浏览量
2011-10-21
15:36:37
上传
评论 1
收藏 2KB TXT 举报
温馨提示
试读
2页
/** 判断点在多边形内算法. * 使用计算几何中的弧线法,内角和法的一种变形. * 与射线法、内角和法一样,时间复杂度是O(n). * @param point 待判断的点 * @param poly 多边形,这里简单地看做为一个点集 */
资源推荐
资源详情
资源评论
/** 判断点在多边形内算法.
* 使用计算几何中的弧线法,内角和法的一种变形.
* 与射线法、内角和法一样,时间复杂度是O(n).
* @param point 待判断的点
* @param poly 多边形,这里简单地看做为一个点集
*/
function isInsidePolygon(point, poly) {
// 判断点象限函数
var getQuad = function(pt) {
var qid = (pt.x >= 0)?((pt.y >= 0)?0:3):((pt.y >= 0)?1:2);
return qid;
};
// 检查顶点数
if(poly.length < 3)
return false;
// 平移多边形,使point在新坐标系中为原点
var vtxs = [];
for (var pi in poly)
vtxs[pi] = {x: (poly[pi].x - point.x), y: (poly[pi].y - point.y)};
var sum = 0;//弧长和*2/π
var q1, q2;//相邻两节点的象限
var ep = 0;//用来存放外积
var dq = false;//用来存放两点是否在相对象限中
q1 = getQuad(vtxs[0]);
for (var vi = 1; vi < vtxs.length; vi++) {
// point为多边形的一个节点
if (vtxs[vi].x==0 && vtxs[vi].y==0)
return true;
// 计算两点向量外积,用来判断点是否在多边形边上(即三点共线)
ep = vtxs[vi].y * vtxs[vi-1].x - vtxs[vi].x * vtxs[vi-1].y;
* 使用计算几何中的弧线法,内角和法的一种变形.
* 与射线法、内角和法一样,时间复杂度是O(n).
* @param point 待判断的点
* @param poly 多边形,这里简单地看做为一个点集
*/
function isInsidePolygon(point, poly) {
// 判断点象限函数
var getQuad = function(pt) {
var qid = (pt.x >= 0)?((pt.y >= 0)?0:3):((pt.y >= 0)?1:2);
return qid;
};
// 检查顶点数
if(poly.length < 3)
return false;
// 平移多边形,使point在新坐标系中为原点
var vtxs = [];
for (var pi in poly)
vtxs[pi] = {x: (poly[pi].x - point.x), y: (poly[pi].y - point.y)};
var sum = 0;//弧长和*2/π
var q1, q2;//相邻两节点的象限
var ep = 0;//用来存放外积
var dq = false;//用来存放两点是否在相对象限中
q1 = getQuad(vtxs[0]);
for (var vi = 1; vi < vtxs.length; vi++) {
// point为多边形的一个节点
if (vtxs[vi].x==0 && vtxs[vi].y==0)
return true;
// 计算两点向量外积,用来判断点是否在多边形边上(即三点共线)
ep = vtxs[vi].y * vtxs[vi-1].x - vtxs[vi].x * vtxs[vi-1].y;
资源评论
- xiaolinziwlf2013-07-08很不错,刚好我用的上,谢谢!
- wuxw_easier2013-07-09算法简单,但是可能不是太适合用于对经纬度的计算上,需要改进一下
- weiqi042014-07-15还不错,刚好用的上,定位问题也可以根据这个来,不过要改
- Smartid2013-06-13效率挺高的一个东西
- ch9232014-03-10您提供的方法我用在了一个地图的项目上面。不过还是有不足的地方,如果顶点过多,比如超过2000个点的话,在边缘地区会出现点在区域外的情况。但算法上不可否认,牛。
zengliang59
- 粉丝: 1
- 资源: 51
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功