我是靠谱客的博主 灵巧悟空,最近开发中收集的这篇文章主要介绍地图判断点是否在面里面算法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

直接上代码:

一个数据对类:PairValue

 /**
* 数据对
*
*/
public class PairValue<T> {
private T x;
private T y;
public PairValue(){
}
public PairValue(T t1, T t2) {
this.x = t1;
this.y = t2;
}
public T getX() {
return x;
}
public void setX(T x) {
this.x = x;
}
public T getY() {
return y;
}
public void setY(T y) {
this.y = y;
}
}
     isPointInArea 方法


/***
* 判断点是否在面里
* points 一组点集合
* point 判断点
*/
public static boolean isPointInArea(List<PairValue<Double>> points, PairValue<Double> point){
if(points == null || points.size() ==0 || point == null){
return false;
}
List<Point2D.Double> dPoints = new ArrayList<Point2D.Double>();
for(PairValue<Double> onePoint : points){
dPoints.add(new Point2D.Double(onePoint.getX(), onePoint.getY()));
}
GeneralPath path = getGeneralPath(dPoints);
if(path == null){
return false;
}
Point2D.Double dPpoint = new Point2D.Double(point.getX(), point.getY());
return path.contains(dPpoint);
}

protected static GeneralPath getGeneralPath(List<Point2D.Double> points) {
GeneralPath path = new GeneralPath();
if (points.size() < 3) {
return null;
}
path.moveTo((float) points.get(0).getX(), (float) points.get(0).getY());
for (Iterator<Point2D.Double> it = points.iterator(); it.hasNext();) {
Point2D.Double point = (Point2D.Double) it.next();
path.lineTo((float) point.getX(), (float) point.getY());
}
path.closePath();
return path;
}




最后

以上就是灵巧悟空为你收集整理的地图判断点是否在面里面算法的全部内容,希望文章能够帮你解决地图判断点是否在面里面算法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部