资源简介
围栏检测算法,使用的是射线法进行的点与围栏间的关系

代码片段和文件信息
package Region;
import java.util.List;
/*
* 围栏点判断类
*/
public class AnalysisPointAndRegion {
private static double _dis = 0.0000000001;
public static Boolean judgeMeetPoint(AyPoint apList apl){
//检测点为空或围栏为空,返回false
if(ap == null || apl == null) return false;
//检测围栏数组
int len = apl.size();
if(len <3) return false;
//交点数
int meetPointCount = 0;
//围栏判断
for(int k = 1 ; k < len; k++){
AyPoint p1 = apl.get(k);
AyPoint p2 = apl.get(k-1);
//初步判断 大范围过滤
if( (ap.getX() > p1.getX() || ap.getX() < p2.getX() || (ap.getX() > p1.getX() || ap.getX() < p2.getX()))//x坐标在顶点线段范围外
|| (ap.getY() < p1.getY() && ap.getY() < p2.getY()))
continue;
/*
* 检测点在线段范围内,进行交点计算
*/
//点在线上,认为在围栏内,则可返回true了
if(judgePointInLine(p1p2ap))
return true;
//处理特殊情况,交点是端点的情况
double temp;
//temp相当于被除数(斜率的分母)
temp = p1.getX() - p2.getX();
if (temp >= -_dis && temp <= _dis){
//处理交点情况
double dx = ap.getX() - p1.getX();
if(dx < -_dis || dx > _dis) continue;
int[] indexs = new int[2];
indexs[0] = 0;
indexs[1] = 0;
indexs = getNotSame(aplk);
AyPoint lineP1 = apl.get(indexs[0]);
AyPoint lineP2 = apl.get(indexs[1]);
if( k> indexs[0])
break;
else
k = indexs[0] + 1;
if( (ap.getY() > p1.getY())
&& ( (ap.getX() >= lineP1.getX() && ap.getX() <= lineP2.getX())
|| (ap.getX() >= lineP2.getX() && ap.getX() <= lineP2.getX())
)
)
meetPointCount++;
}else{
double kk;
double bb;
double meetPtX;
double meetPtY;
kk = (p1.getY() - p2.getY()) / (p1.getX() - p2.getX());
bb = p1.getY() - kk * p1.getX();
meetPtY = kk * ap.getX() + bb;
meetPtX = ap.getX();
//处理特殊情况,交点是端点的情况
double dx = meetPtX - p1.getX();
double dy = meetPtY - p1.getY();
double dx2 = meetPtX - p2.getX();
double dy2 = meetPtY - p2.getX();
if(dx >= -_dis && dx <= _dis && dy >= -_dis && dy <= _dis){
AyPoint p3;
if(k == 1){
p3 = apl.get(len - 2);
}else{
p3 = apl.get(k - 2);
}
//提取交点的上下两点分别在垂线的两侧
if( (ap.getY() > meetPtY)
&& ((meetPtX >= p3.getY() && meetPtX <= p2.getX())
|| (meetPtX >= p2.getX() && meetPtX <= p3
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-12-03 09:31 IsPointInRegion\
文件 301 2013-12-03 09:31 IsPointInRegion\.classpath
文件 391 2013-12-03 09:31 IsPointInRegion\.project
目录 0 2013-12-03 09:31 IsPointInRegion\.settings\
文件 598 2013-12-03 09:32 IsPointInRegion\.settings\org.eclipse.jdt.core.prefs
目录 0 2013-12-03 11:27 IsPointInRegion\bin\
目录 0 2013-12-03 11:27 IsPointInRegion\bin\Region\
文件 3987 2013-12-03 11:27 IsPointInRegion\bin\Region\AnalysisPointAndRegion.class
文件 510 2013-12-03 11:27 IsPointInRegion\bin\Region\AyPoint.class
文件 1593 2013-12-03 11:51 IsPointInRegion\bin\Region\TestRegion.class
目录 0 2013-12-03 11:27 IsPointInRegion\src\
目录 0 2013-12-03 11:27 IsPointInRegion\src\Region\
文件 5331 2013-12-03 11:27 IsPointInRegion\src\Region\AnalysisPointAndRegion.java
文件 433 2013-12-03 11:27 IsPointInRegion\src\Region\AyPoint.java
文件 734 2013-12-03 11:51 IsPointInRegion\src\Region\TestRegion.java
- 上一篇:jsp.rar
- 下一篇:java实现的类似qq聊天系统
相关资源
- 微博系统(Java源码,servlet+jsp),适
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
评论
共有 条评论