2012-01-10 10 views
3

나는 주어진 점에서 시작하여 원/타원을 그릴 필요가있는 평면 내에 이미로드 된 거대한 세트의 점과 미터로 반경 거리를 계산 한 다음 원 안에 점이 있는지 확인해야합니다.JTS로 원 안에 점

이미 within() 메서드를 사용하여 다각형을 만들었지 만 다각형 주위의 모든 점을 지정하지 않고 원/타원을 그리는 방법을 찾을 수 없습니다.

JTS에서이 작업을 수행 할 수있는 방법이 있습니까? 아니면 다른 Java 라이브러리가 필요합니까?

답변

2

지점과의 거리가 반지름보다 작은 지 확인할 수 있습니다. 어떤 점이 안에 있는지 알기 위해 원을 그릴 필요가 없습니다. 보다 빠른 실행 시간을 위해서는 거리의 제곱과 반지름의 제곱을 비교하십시오. 이렇게하면 불필요한 제곱근 연산이 절약됩니다.

타원의 경우 문제는 단 2 차원 양식 x^2 + k y^2을 포함하여 약간 더 어렵습니다. 내가 제대로 이해하면

+0

이유 shapeFactory.setNumPoints (32);? 어떻게 32 세가 됐니? –

1

당신은 반경과 중심을 가지고, 그래서 당신은이 같은 JTS와 원 그릴 수 있습니다 :

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(); 
} 
관련 문제