PathIterator для java.awt.Rectangle всегда дает (0,0)
В моем коде я создаю экземпляр java.awt.Rectangle
с углом и длиной и шириной. Затем я применяю аффинное преобразование вращения(at), чтобы повернуть его на определенный угол.
Затем я выбираю PathIterator прямоугольника и повторяю геометрию следующим образом:
PathIterator i = rectangle.getPathIterator(at);
while (!i.isDone()) {
double[] xy = new double[2];
i.currentSegment(xy);
}
Хотя я ожидаю, что 4 балла (или 5 как первый и последний могут быть одинаковыми), я получаю 6 баллов. И еще удивительнее, что последняя точка всегда (0,0). (0,0) не является частью геометрии прямоугольника, но я все еще получаю это всегда. В чем причина такого поведения?
1 ответ
Проверьте возвращаемое значение currentSegment
, Последняя "точка" будет иметь тип PathIterator.SEG_CLOSE
, который задокументирован как:
Константа типа сегмента, которая указывает, что предыдущий подпуть должен быть закрыт путем добавления линейного сегмента обратно к точке, соответствующей самому последнему SEG_MOVETO.
Данные точек, связанные с этим типом, являются неявными (т. Е. Первая и последняя точки в пути). Ничего не записывается в массив, когда currentSegment
возвращается SEG_MOVETO
; точка (0, 0), которую вы видите при последнем вызове, является значением, с которым массив был инициализирован при его создании.