友情提示:380元/半年,儿童学编程,就上码丁实验室。
在Scratch中,使用坐标进行绘图是一个很常用的功能。在绘制过程中,有时需要对坐标进行变换,以绘制出不同角度或不同大小的形状。
我们绘制这样一个房子。
从程序中可以看到是使用各点的坐标绘制了一个房子。
那么,可以如何对坐标进行变换呢?

例如我们想对这个房子进行变化。比如说,我们想绘制一个大一点或小一点的房子,或者左右镜像,或移动一定的位置,或者转动一个角度,要如何做呢?
当然,我们可以重新计算一下各点的坐标,再重新绘制,但这是一个比较复杂的过程。如何能使用数学方法进行处理呢?
这个问题在数学中称为“坐标变换”。也就是对于原来的坐标,通过一定的变换,得到新的情况下的坐标。今天我们研究在二维坐标系下的变换。
为了实现坐标变换,我们设计一个自定义积木,能够代替原来的“移动到”积木。
将原来的程序中的移动到都修改为使用自定义积木。
现在我们就可以通过修改自定义积木进行坐标变换了。

尺寸变换的公式是将x坐标或y坐标乘一个变换的系数。
即xNew=x系数*xOld, yNew=y系数*yOld。
例如我们这样修改积木
结果是这样的,可以看出来,由于x和y都增加到原来的1.5倍,房子就变大了。
大家可以试验一下,如果两个系数不同的话,会在不同的方向上有不同的变化,如果系数大于1,则放大,如果系数小于1,则缩小。
例如:当X系数=1.8,y系数=0.3时,得到如下的图形。
如果想让房子平移,则可以在X或Y坐标上加减一个数字。
例如:
可以看到,整个房子平移了(50,30)。
如果想对Y轴或X轴镜像的话,可以简单地使用0减去X或Y就可以了。
如果不是以x轴或y轴对称的话,可以使用对称轴的x坐标或y坐标值去u减x或y。
可以加入xy坐标之间的变换,例如newx=oldx+a*oldy,或newy=oldy+a*oldx得到倾斜的效果。
得到下面的效果:
可以看到,得到了一个倾斜的房子。
变换的结合
可以将上面几个变换结合起来使用。大家可以试试,能够得到很有趣的结果。
总结
1 使用自定义积木,使用Scratch进行了坐标变换。
2 使用坐标变换,可以得到放大缩小、镜像、移动和倾斜的效果。
3 坐标变换的数学基础是矩阵计算,有兴趣的同学可以自己学习研究一下。