PathIterator를 사용하여 곡선 경로를 계산할 수 있도록 Shape 객체의 중심을 계산하려고하지만 표준 1x1 사각형의 중심을 찾을 때 내 getCenter() 메서드는 점을 반환합니다.Java PathIterator - 도형의 중심을 정확하게 계산하려면 어떻게해야합니까?
Point2D.Double[0.3333333333333333, 0.3333333333333333]
내 getCenter() 메소드 :
shape = new Rectangle2D.Double(0, 0, 1, 1);
public Point2D.Double getCenter()
{
ArrayList<Point2D.Double> points = new ArrayList<Point2D.Double>();
double[] arr = new double[6];
for(PathIterator pi = shape.getPathIterator(null); !pi.isDone(); pi.next())
{
pi.currentSegment(arr);
points.add(new Point2D.Double(arr[0], arr[1]));
}
double cX = 0;
double cY = 0;
for(Point2D.Double p : points)
{
cX += p.x;
cY += p.y;
}
System.out.println(points.toString());
return new Point2D.Double(cX/points.size(), cY/points.size());
}
내가 points.toString()을 인쇄에 있음을 발견했다, 나는 콘솔이 얻을 :
[Point2D.Double[0.0, 0.0], Point2D.Double[1.0, 0.0], Point2D.Double[1.0, 1.0], Point2D.Double[0.0, 1.0], Point2D.Double[0.0, 0.0], Point2D.Double[0.0, 0.0]]
입력 Shape 객체가 Rectangle2D.Double (0, 0, 1, 1)이라는 점을 감안할 때, 예상했던 네 개가 아니라, 점 배열에 여섯 개의 항목이 있음을 발견했습니다. 분명히 그것은 내가 원하는 것보다 두 번 더 (0, 0) 점에 대한 것이고, 왜 그런지 혼란 스럽습니다. PathIterator.isDone() 메서드의 결과입니까? 내가 잘못 사용하고 있습니까? PathIterator가 내 문제를 해결할 수 없다면 어떻게 될까요?