2015-06-22 35 views
2

的加工手冊(第二版)具有此如實施例17-10:如何在其中心旋轉PShape?

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原點嗎? 謝謝!

回答

2

我能夠使用默認渲染器在3.0a10中重現此操作。如果我指定P2D作爲渲染器size(100,100,P2D),則PShape圍繞中心點旋轉,如預期的那樣。在版本2.2.1中指定P2D也適用。

所以我覺得這看起來像一個錯誤。也許值得在Processing Github上打開一個問題?

更新:似乎已經有一個open issue for this