处理手册(第二版)以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原点吗? 谢谢!
答案 0 :(得分:2)
我能够使用默认渲染器在3.0a10中重现这一点。如果我将P2D
指定为渲染器size(100,100,P2D)
,则PShape
会按预期旋转中心点。在版本2.2.1中指定P2D也可以。
所以我觉得这看起来像个bug。也许值得在Processing Github开启一个问题?
更新:似乎已经有open issue for this。