如何围绕中心旋转PShape?

时间:2015-06-22 22:11:40

标签: 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);
}

本例附带的书中的图像显示了围绕画布中心旋转的形状。

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

-50,-50平移和50,50个坐标对我来说(基于我的有限理解)似乎意味着旋转应该以[50,50]点为中心,但这并不是我运行代码时要忍受吗?关于如何让形状围绕其中心旋转的任何想法? 我的意思是特别使用zig.rotate()方法,我知道你可以翻译&旋转画布作为一个整体,但我想围绕其中心旋转这个形状。 创建后可以更改PShapes原点吗? 谢谢!

1 个答案:

答案 0 :(得分:2)

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

所以我觉得这看起来像个bug。也许值得在Processing Github开启一个问题?

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