如何围绕中心旋转 PShape?

How to rotate a PShape around its centre?

Processing 手册(第二版)中的示例 17-10 是这样的:

PShape zig;

void setup() {
  size(100, 100);
  zig = createShape();
  zig.beginShape();
  zig.fill(0);
  zig.noStroke();
  zig.vertex(10, 0);
  zig.vertex(100, 30);
  zig.vertex(90, 70);
  zig.vertex(100, 70);
  zig.vertex(10, 90);
  zig.vertex(50, 40);
  zig.endShape();
  zig.scale(0.7);
  zig.translate(-50, -50);
}

void draw() {
  background(204);
  shape(zig, 50, 50);
  zig.rotate(0.01);
}

本书中的图片显示了围绕 canvas 中心旋转的形状。

然而,当我 运行 那个确切的代码时,形状围绕 canvas 左上角的 [0,0] 点旋转。

-50, -50 平移和 50, 50 坐标对我来说似乎暗示(基于我有限的理解)旋转应该以 [50, 50] 点为中心,但这不是'当我 运行 代码时,你还看不出来吗?关于如何让形状围绕其中心旋转有什么想法吗? 我的意思是具体使用 zig.rotate() 方法,我知道您可以将 canvas 作为一个整体进行平移和旋转,但我想专门围绕其中心旋转此形状。 创建 PShapes 后可以更改原点吗? 谢谢!

我能够使用默认渲染器在 3.0a10 中重现这一点。如果我将 P2D 指定为渲染器 size(100,100,P2D)PShape 将按预期围绕中心点旋转。在 2.2.1 版本中指定 P2D 也有效。

所以我认为这看起来像是一个错误。也许值得在 Processing Github?

上开个 issue

更新:似乎已经有 open issue for this.