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) 不是矩形几何的一部分,但我仍然总是得到它。这种行为背后的原因是什么?

4

1 回答 1

0

检查 的返回值currentSegment。最后一个“点”将是 type PathIterator.SEG_CLOSE,它被记录为:

段类型常量,指定前面的子路径应通过将线段附加回与最近的 SEG_MOVETO 对应的点来关闭。

与此类型关联的点数据是隐式的(即路径中的第一个和最后一个点)。currentSegment返回时没有任何内容写入数组SEG_MOVETO;您在上次调用中看到的点 (0, 0) 是创建数组时初始化数组的值。

于 2017-09-20T04:28:48.523 回答