如何用scratch画正三角形:用Scratch编程画几何图形
用Scratch编程软件来画几何图形是件非常有趣的事情,大家可以用学过的几何知识结合编程技巧画出各种各样的几何图形。从简单的单一图形到复杂的组合图形,你想怎么画就怎么画,就看你的创意了。
上一期给大家讲解了如何画“平行四边形”,不知道大家都学会了吗?今天,我们来学习用编程画梯形!
梯形的概念在画梯形这个几何图形之前,我们需要先搞清楚什么样的图形是梯形?
梯形的定义:梯形是只有一组对边平行的四边形。平行的两边叫做梯形的底边;较长的一条底边叫下底,较短的一条底边叫上底;另外两边叫腰;夹在两底之间的垂线段叫梯形的高。一腰垂直于底的梯形叫直角梯形。两腰相等的梯形叫等腰梯形。
假设有这么一个梯形(如上图),已知梯形下底边长为200单位,梯形的高为90单位,梯形下底与左腰的夹角为45度,梯形下底与右腰的夹角为60度。像这样一个梯形,我们要如何去画呢?
为了画出这种类型的梯形,我们先对这个图形进行一下分析。
根据之前学习画图形的经验,我们知道,要画出这个梯形,我们需要知道上底、下底、左腰和右腰,这四条边的长度,以及梯形内部四个内角的角度。现在已经知道的是下底的边长,以及下底左右两个内角的角度,还有上底、左腰、右腰,以及上底左右两个内角的角度未知。
我们先来从上底的两端,分别向下底画两条垂直线段,这两条垂直线段也就是这个梯形的高(长度为90单位)。通过这两条垂直辅助线,把这个梯形就分成了左边一个三角形,中间一个矩形,右边一个三角形。
通过考察左边这个三角形发现,其中一个角是直角,一个角是45度,那么另外一个角也就是45度。中间这个矩形,四个角都是90度。右边这个三角形,其中一个角是直角,一个角是60度,那么另外一个角也就是30度。因此,可以得到梯形上底左边的内角为135度,右边的内角为120度。
梯形的内角角度都知道了,下面我们来计算梯形的上底和两腰的边长。在左边这个等腰直角三角形中,一条直角边为90单位,根据三角函数,我们计算出另外一条直角边:a边 = 90/tan45 = 90,然后再使用勾股定理计算出梯形的左腰:c边 = (902 902)的平方根 = 127.3。同样的原理,我们计算出右边三角形中的另外一条直角边:b边 = 90/tan60 = 52,然后再使用勾股定理计算出梯形的右腰:d边 = (902 522)的平方根 = 104。最后我们就可以计算出梯形的上底:e边 = 200 - (a边 b边) = 58。
绘图思路:
根据上图,我们把箭头的方向做为绘图开始的方向,从左下角开始向箭头所指方向移动,先画梯形的下底,到达右下角后,向左转向120度,然后向前移动,画梯形的右腰,到达右上角后,向左转向60度,然后向前移动,画梯形的上底,到达左上角后,向左转向45度,然后向前移动,画梯形的左腰,到达左下角后,最后向左转向135度,恢复到最初的方向,完成梯形的绘制。
疑问(1):梯形的四个边要画多长?
在我们的例子中已知下底为200单位,高为90单位,通过计算得到梯形的上底和两腰的长度。如果大家希望画不同大小的梯形,可以先把下底和高自定义好,然后使用前面讲解的方法,利用三角函数和勾股定理去计算梯形的上底和左右两腰的长度。
疑问(2):为什么要在梯形的右下角向左转120度,右上角向左转60度,左上角向左转45度,左下角向左转135度?
这个问题其实已经讲过很多次了,左转的角度多少与梯形的内角有关。因为左转的角度与内角的和为180度,所以180度减去相应内角的角度就是需要左转的角度了。例如:在梯形中,右下角是60度,此处左转的角度就是180 - 60 = 120度;右上角是120度,此处左转的角度就是180 - 120 = 60度;左上角是135度,此处左转的角度就是180 - 135 = 45度;左下角是45度,此处左转的角度就是180 - 45 = 135度。
编程实践主要用到的编程积木模块
参考程序
本示例中,定义梯形下底为200,高为90,左下角为45度,右下角为60度。
通过以上的讲解,大家是不是已经学会怎么画“梯形”了呢?大家多多练习,认真体会吧!
推 荐 阅 读用Scratch编程画几何图形:如何画平行四边形
用Scratch编程画几何图形:如何画矩形
用Scratch编程画几何图形:如何画普通三角形
用Scratch编程画几何图形:如何画3:4:5三角形
用Scratch编程画几何图形:如何画30-60-90三角形
用Scratch编程画几何图形:如何画等腰直角三角形
用Scratch编程画几何图形:如何画等边三角形
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com