我正在尝试处理。
现在我只是想缩放一个矩形。我找到了这个例子:
float a = 0.0;
float s = 0.0;
void setup()
{
size(200,200);
rectMode(CENTER);
frameRate(30);
}
void draw()
{
s = s + 0.04;
translate(width/2, height/2);
scale(s);
rect(0, 0, 50, 50);
}
它可以平滑地缩放矩形但是我有点意外,因为为了调整矩形的大小,我预计rect()的大小调整参数(第3和第4个)被修改,类似这样:
float r = 1;
void setup()
{
size(200,200);
rectMode(CENTER);
frameRate(30);
}
void draw(){
rect(width/2, height/2, r, r);
r += 1;
}
但这种方式不能平滑地缩放矩形。那么,即使我发现第二种方法更自然,我应该使用第一种方法而不是第二种方法吗?任何评论都会很好。
此致
哈维尔
答案 0 :(得分:2)
第一个解决方案非常复杂,实际上并不是缩放矩形,而是缩放投影矩阵。投影矩阵是在将某些内容绘制到屏幕之前应用的一系列数学运算。你可以把它想象成一个相机,但它要复杂得多。
我实际上把代码并排放在一起,并没有注意到平滑度的差异。我还添加了一些调整,这可能有所帮助:)
float r = 1;
float s = 0.0;
void setup()
{
size(200,200);
rectMode(CENTER);
frameRate(30);
smooth();
}
void draw(){
rect(width/4, height/2, r, r);
r += 1.4;
translate(width/2, height/2);
scale(s);
translate(-width/2, -height/2);
rect(width/2, height/2, 50, 50);
s += 0.04;
}
我所做的主要改变是顺利开启。我认为,因为你没有使用它,顶部正方形绘图跳转到每个像素,但通过翻译/缩放操作,它将平滑那些。我做的另一件事是在完成缩放操作后转换回左上角。这样做很重要,因为事情会在您期望的地方绘制。您会注意到缩放矩形现在从中心向外扩展。