——海龟的拉伸变形——
海龟的变形有自动(auto)、用户(user)和不变化(noresize)三种模式,使用resizemode方法设置。当无参数时返回当前的变形模式,改变就输入三种模式中的一种。不变化模式没什么好讲的,这里只讨论自动和用户模式。默认的模式一般是不变化(noresize)。
auto海龟随着画笔大小pensize的变化而变化:
。
user模式,画笔大小pensize变化了,会怎样呢?测试一下:
。
可见,海龟并没有随画笔的大小变化而变化。原来,user模式是由用户自行通过shapesize(别名turtlesize)方法调节海龟大小。该方法依次有三个可选参数:stretch_wid 为横(垂直于海龟朝向的宽度)拉伸比例,stretch_len 为直(平行于海龟朝向的长度)拉伸比例,outline是形状轮廓线粗细。没有参数返回当前拉伸三数元组。由于shapesize专门用于user模式的,所以在调用时,如果系统发现不是user模式,就先调用resizemode("user")变更为user模式,意思就是说,resizemode("user")代码是没必要的。
。
auto模式也是一种拉伸变形,只不过拉伸比和轮廓线大小由系统根据画笔的大小自动决定。
——海龟的剪切变形——
shearfactor方法用于海龟的剪切变形,参数是剪切角的正切函数值,当没有参数时,返回当前剪切角的正切函数值。
【百度百科】在Rt△ABC(直角三角形)中,∠C=90°,AB是∠C的对边c,BC是∠A的对边a,AC是∠B的对边b,正切函数就是tanB=b/a,即tanB=AC/BC。
海龟的剪切变形实际是横线(与海龟朝向垂直)的长度和相互之间的距离不变,以海龟的朝向中点为中心进行顺时针(参数为正数)或逆时针(参数为负数)进行等面积变形。自定义坐标setworldcoordinates不改变这种顺逆时针的关系。
注:math.tan为正切函数;math.radians把角度值转为弧度值。
练习:把上面的剪切变形测试输入电脑自己测试一次,更换不同的海龟形状和自定义海龟形状,测试变形情况。