如何在processing.js中旋转SVG图像

时间:2012-07-06 22:14:59

标签: svg rotation processing processing.js

我只是盯着processing.js而我遇到了麻烦,因为每次旋转图像时它都会改变它在屏幕上的位置。那么处理似乎是做什么,围绕我告诉它放置它的点旋转我的图像,而不是首先围绕它自己的轴旋转它然后将它放在我告诉它的位置(我认为不能以这种方式完成/顺序)。

这是代码

PShape s;
float angle = 0.1; //rads
s = loadShape("sensor.svg");
s.rotate(angle);
//I change this angle manually or with my clickMouse function which isnt shown.

void setup(){
    size(400,350);
frameRate(30); //30 frames per seconds
}

void draw(){ //shape( shape, x, y, width, height);
    smooth();
    fill(153);
    ellipse(200, 350/2, 100, 100);
    shape(s, 200, 350/2, 20, 20);
    ellipse(200, 350/2, 2, 2);
}

我基本上要做的是让这个“传感器”图像围绕我绘制的圆(椭圆)以正确的方向旋转。这个想法。它既不做也不做。也许有一个点击功能可以围绕圆圈旋转SVG图像。但它反过来围绕形状(图像,x_coord,y_coord,宽度,高度)函数的坐标旋转。如果有人有任何建议,我会很高兴!希望我的问题有道理,如果不是,我会非常乐意澄清它的任何部分。

谢谢! :)

1 个答案:

答案 0 :(得分:2)

不要旋转你的形状,而是旋转坐标系要容易得多。

void draw() {
  translate(s.width/2,s.height/2);
  rotate(PI/4);
  shape(s);
  resetMatrix();
  // keep on drawing here
}

首先移动坐标系,使(0,0)位于形状中心的顶部,然后将整个坐标系旋转45度,然后绘制形状。然后重置坐标系并像往常一样继续绘图。