java.awt.Rectangle的PathIterator总是给出(0,0)

时间:2017-09-20 03:55:10

标签: java affinetransform path-iterator

在我的代码中,我创建了一个 java.awt.Rectangle的实例,其中包含一个角,长度和宽度。然后我在其上应用旋转仿射变换(at)以将其旋转一定角度。

然后我获取矩形的PathIterator并将几何体迭代为:

PathIterator i = rectangle.getPathIterator(at);
while (!i.isDone()) {
    double[] xy = new double[2];
    i.currentSegment(xy);
}

虽然我预计4分(或者第一名和最后一名可能相同),但我得到的是6分。更令人惊讶的是,最后一点总是(0,0)。 (0,0)不是矩形几何的一部分,但我总是得到它。 这种行为背后的原因是什么?

1 个答案:

答案 0 :(得分:0)

检查currentSegment的返回值。最后一点"将是PathIterator.SEG_CLOSE类型,记录为:

  

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

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