主要内容
旋转
除了移动网格外, 还可以使用
rotate()
函数来对使其旋转。此函数只有一个参数, 即要旋转的度数:degrees。在可汗学院中使用的 ProcessingJS 版本中,所有与旋转有关的函数都以角度为单位,但是也可以将他们设置为使用弧度(角度测量的标准单位)。如果你想要使用弧度,你可以将
angleMode = "radians";
放在你程序的顶部。当我们在用角度来描述角的时候,我们叫一整圈的角度为 360°。当我们在用弧度来描述角的时候,我们叫一整圈的弧度为 2π 。下面的图示可以帮你理解角度与弧度。
想要学习或者复习一下角度的测量?你可以看看可汗学院中的这篇"角度的基础与测量"。
先让我们来点简单的吧:将一个正方形旋转45度:
瞧,发生什么了?正方形为什么会动,又为什么会被切断了呢?答案是:正方形其实没有动,而旋转的是网格。下面就是实际上发生的事情。可以看到,在旋转坐标系上,正方形的左上角仍然在 (40, 40)。
用正确的方式旋转
旋转正方形的正确方法是:
- 将坐标系的原点 (0, 0) 平移到你要旋转的正方形的左上角。
- 将网格旋转 45° (弧度为 π/4)
- 再在原点处绘制正方形。
下面就是以正确的方式旋转了正方形的程序。注意代码中的差异:这个程序包括了
translate(40, 40);
,并且用rect(**0, 0,** 40, 40);
取代了 rect(**40, 40,** 40, 40);
。本文改编自 J David Eisenberg 的 2D Transformations,在 Creative Commons Attribution-NonCommercial-ShareAlike 许可证下使用。