JAVA,如何判断点是否在面内

JAVA,如何判断点是否在面内

大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说JAVA,如何判断点是否在面内,希望能够帮助大家进步!!!

首先面也是由一系列的点组成,比如,一个正方形。我们可以把它当成四个坐标点然后直线连接而成。

java.awt.geom.GeneralPath为我们实现的这个画线的功能。

下面用一个简单的例子来画一个面

/**
* 将经纬度点集合转换为GeneralPath对象
*
* @param points 点集合(有序)
*
* @return GeneralPath对象
*/
public static GeneralPath genGeneralPath(ArrayList<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;
}

其中。points是一系列坐标点的集合。我们可以用

Point2D.Double point= new Point2D.Double(x,y);生成新的坐标点

moveTo方法:通过移动到指定的坐标在路径中添加点

直接用

lineTo:通过绘制一条从当前坐标到新指定坐标的直线在路径中添加点。

这样每加一个点。我们就用上一个点到这个点画条直线。这样就成功的画好了一个面了。

然后,我们判读点是否在该面中

GeneralPath类的contains方法就可以了。真的非常方便

本文来源huayang183,由架构君转载发布,观点不代表Java架构师必看的立场,转载请标明来源出处:https://javajgs.com/archives/18269

发表评论