translate(x, y)函数用于改变坐标系,使之向左、向右、向上或者向下。多个translate()函数,原点的坐标是累加的。例如:
void setup() {
size(120, 120);
}
void draw() {
translate(mouseX, mouseY);
rect(0, 0, 30, 30);
translate(35, 10);//第一个
rect(0, 0, 15, 15);
translate(35, 10);//第二个
rect(0, 0, 15, 15); //这个矩形被移动了 mouseX 35和 mouseY 10的距离。
}
如果两个图形想要独立变换,可以使用pushMatrix()和popMatrix()函数。当pushMatrix()函数运行的时候,它保存一个当前坐标系的备份,然后在调用popMatrix()函数之后还原。例如:
void setup() {
size(120, 120);
}
void draw() {
pushMatrix();
translate(mouseX, mouseY);
rect(0, 0, 30, 30);
popMatrix();
translate(35, 10);
rect(0, 0, 15, 15);//位置不变
}
二、旋转
rotate(A)函数用于沿原点旋转整个坐标系。它有一个参数,是要旋转的角度(用弧度制表示)。
三、缩放scale()函数可延展屏幕中的坐标。scale(1.5)使得每一个物体都是原来尺寸的150%,scale(0.5)使得每个物体变成原来尺寸的一半。
注意:scale()方法会影响描边粗细。为了图形缩放中保持一个一致的描边粗细,需要用所期望的描边粗细除以一个标量值。
void setup() {
size(120, 120);
}
void draw() {
translate(mouseX, mouseY);
float scalar = mouseX / 60.0;//定义一个标量值
scale(scalar);
strokeWeight(1.0 / scalar);
rect(-15, -15, 30, 30);
}
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved