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