Java 带JTS的圆内点
我已经在一个平面内加载了大量的点,我需要从给定点开始绘制一个圆/椭圆,半径距离以米为单位,然后检查哪些点在圆内 我已经使用within()方法对多边形进行了此操作,但是我无法找到一种不必指定多边形周围的每个点就可以绘制圆/椭圆的方法Java 带JTS的圆内点,java,jts,Java,Jts,我已经在一个平面内加载了大量的点,我需要从给定点开始绘制一个圆/椭圆,半径距离以米为单位,然后检查哪些点在圆内 我已经使用within()方法对多边形进行了此操作,但是我无法找到一种不必指定多边形周围的每个点就可以绘制圆/椭圆的方法 有没有办法在JTS上实现这一点,或者我需要另一个java库?您只需验证距点的距离是否小于半径即可。不需要画圆就知道哪些点在里面。对于更快的运行时间,比较距离的平方和半径的平方;这样可以节省不必要的平方根操作 对于椭圆,问题只稍微难一点,涉及二次型x^2+ky^2如果
有没有办法在JTS上实现这一点,或者我需要另一个java库?您只需验证距点的距离是否小于半径即可。不需要画圆就知道哪些点在里面。对于更快的运行时间,比较距离的平方和半径的平方;这样可以节省不必要的平方根操作
对于椭圆,问题只稍微难一点,涉及二次型
x^2+ky^2
如果我理解正确,你有半径和中心,因此你可以用jt画一个圆,如下所示:
public static Geometry createCircle(double x, double y, final double RADIUS) {
GeometricShapeFactory shapeFactory = new GeometricShapeFactory();
shapeFactory.setNumPoints(32);
shapeFactory.setCentre(new Coordinate(x, y));
shapeFactory.setSize(RADIUS * 2);
return shapeFactory.createCircle();
}
您可以简单地
buffer
将圆心设置为正值,如下所示:
Point centerPoint = ...;
Polygon circle = (Polygon) centerPoint.buffer(0.1);
为什么使用shapeFactory.setNumPoints(32);?你是怎么想出32的?