在Processing中旋转偏心图像

时间:2015-05-30 16:02:50

标签: image rotation image-rotation

我正在制作一个数字黑胶唱片机项目,目前我正在使用乙烯基部件。我找到了许多关于如何使用rotate()和translate()旋转图像的教程,但所有这些教程都认为图像位于窗口的中心是理所当然的。我的乙烯基不是。请帮忙吗?

1 个答案:

答案 0 :(得分:0)

评论中的代码应该有效:

void draw() { 
  background(0); 

  counter++; 

  translate(width/2-img.width/2, height/2-img.height/2); 
  rotate(counter*TWO_PI/360); 
  translate(-img.width/2, -img.height/2); 
  image(img,0,0); 
}

为了更容易处理从中心旋转的多个图像,可能需要使用pushMatrix() / popMatrix()隔离图像的坐标系(有关详细信息,请参阅2D Transformations Processing tutorial ):

void draw() { 
  background(0); 
  //draw everything from the centre
  translate(width/2,height/2);

  counter++; 

  //isolate image coordinate system
  pushMatrix();

    //move to centre of image
    translate(img.width/2, img.height/2);
    //rotate from centre
    rotate(counter*TWO_PI/360);
    //translate back to corner
    translate(-img.width/2, -img.height/2);
    //render image
    image(img,0,0);

  //exit image coordinate system, return to Processing's global coordinates
  popMatrix();

}