LOGO编程题 相当“简单”的难题——画18角星(1)★★★★
这是这个系列问题答案中的第一个。
解决这一类型问题的最关键的思路是:这些多角星的两条边的长度是不相等的。而标准多角星的所有边长是等长的。
我们已经知道DRAW
HT REPEAT 18[FD 200 RT
:K*360/18]能够画出均匀分布的正18边形。其中:K=7时画出的图形的样子更加接近题目给出的图形。

查找这个问题题目的链接
查找这个问题答案1的链接
查找这个问题答案2的链接
查找这个问题答案3的链接

问题在于题目要求的图形18个角之间分布并不均匀。经过分析可以看出,题目所给出的图形中,靠得远的两个角之间的分布角度是靠得近的两个角的分布角度的3倍。按这样的规律清点起来,整个圆周应当分成36个等分。
其中任意一个角∠BAC=40度(这时正好要RT 140或RT
180-40)。∠BAC所对的弧是80度,剩余的BAC之间的弧是360-80=280度。按每10度1个等分余下28个等分。28/2=14个等分。如果弧AB分配得13个等分、弧AC分配得15个等分,正好把圆的36个等分分配完。
按这样的“从整圆出发,把圆预先切分成若干个等分,再在这些等分点上连线画多角星”的思路,我们有可能把握同类型的所有图形的规律。
从上图中可以看出:AB点段对应的是130度的弧。如果已知AB线段的长度为:L,那么这个隐形的圆的半径应该是
:R=:L/2/SIN
(130/2)=:L/2/SIN 65
在已经计算出:R的值以后,就能计算AC的长度了。AC所对的弧是150度的弧,150度的一半是75度。
AC=AE*2=2*SIN 75
所以题目所给出的图形,在已知较短的线条AB长为:L的情况下,画9组B-A-C,再每次接着转弯140度就可以了。

题目给出的答案使人觉得惊奇:程序正这么简单!
现在有不少LOGO语言研究者及爱好者对林老师的博客予以很大的关注。当林老师的这个题目刚在网络上发表几个小时,就有jin_ming朋友发来这样一个程序:

这个程序有几个重要的技巧:
画18角星转弯的角度是 RT 360*7/18即RT 140;
画18角星的线段长度分别是:A及:A+:K。
如果输入18JX 200 13.16时,就能画出符合题目要求的图形。
这里的13.16是从哪里来的呢?
200*1/2/(SIN
65)*2*(SIN 75)-200=13.16
就是说画这个图形的两条线的长度是200、213.16。
应该说,jin_ming朋友编写的这个程序是相当好的。对于相同的:A,取值不同的:K,画出来的图形形态是完全不一样的。这是相当不容易的。对于jin_ming朋友的编程技巧及热心,林老师在这里表示祝贺并感谢。
但是,林老师在原题目中指出:
例图其实仅仅是一个大类图形的代表。把它的作图规律搞清楚了,还能画出许多漂亮的图形。这里面内在的规律到底在哪里呢?还要看看后面两次答案的解说。
这里是新颖有趣的LOGO、DEV-C++语言之家
欢迎评论 欢迎转载
查找林老师博客最便捷的方法:
在百度、谷歌、搜狗、搜搜、雅虎、有道等搜索引擎中输入
林老师 LOGO
就能找到林老师博客文章了
查阅林老师最新发表文章的链接:
http://blog.sina.com.cn/lzs2099
快速检索数百篇博客提高阅读效率的链接:
《LOGO语言简明教程》及初学者题库
《LOGO语言画图编程题》目录
《LOGO及DEV-C++计算编程题》目录
《LOGO竞赛试题及解题分析指导》目录
《LOGO语言编程新理念及编程技巧》目录
《奥数及趣味数学问题》目录
《LOGO语言竞赛教程·习题集内容剖析》目录
《林老师话说天南地北》目录
初学者题库及编程技巧分析
查看林老师拍摄及推荐的照片的链接
林正山老师邮箱:
linzhengshan@21cn.com
因网络拥挤“纸条”常不能及时打开查阅。有信息尽量使用“评论”或邮件。
需要LOGO系统文件常用表格工具文件及DEV-C++系统文件的可以发邮件给林老师
声明:
林正山老师发表的文章及照片,媒体、网站或出版物未经本人许可谢绝进行任何形式的删节、改编、重组及转载。
允许个人博客按原文(含图片及附注)进行完整转载,转载时敬请注明本博作者姓名、文章原始出处,并以链接形式标明来源。
加载中,请稍候......