强基初中数学&学Python——第四十三课 海龟画图基本操作方法之八:海龟的变形


——海龟的拉伸变形——

 

    海龟的变形有自动(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方法用于海龟的剪切变形,参数是剪切角的正切函数值,当没有参数时,返回当前剪切角的正切函数值。

    【百度百科】RtABC直角三角形)中,∠C=90°AB∠C的对边cBC∠A的对边aAC∠B的对边b正切函数就是tanB=b/a,即tanB=AC/BC 

 

    海龟的剪切变形实际是横线(与海龟朝向垂直)的长度和相互之间的距离不变,以海龟的朝向中点为中心进行顺时针(参数为正数)或逆时针(参数为负数)进行等面积变形。自定义坐标setworldcoordinates不改变这种顺逆时针的关系。

 

 

注:math.tan为正切函数;math.radians把角度值转为弧度值。

 

练习:把上面的剪切变形测试输入电脑自己测试一次,更换不同的海龟形状和自定义海龟形状,测试变形情况。