今天在翻Scratch课件时看到了一个利用Scratch画太阳系行星运转的动画,包括公转和自转,感觉很有意思。但是一看程序,各个行星的移动轨迹竟然是把圆上所有坐标写了一遍,这种操作不禁让我想到了C语言初学者为了打印一个菱形于是先在程序里用printf()把所有菱形写出来的场景,以及某科普文章中为了实现超光速飞行必须先用常规速度飞到目的地建造一个锚点的设定。当然,原课件是考虑到一二年级孩子还不会计算坐标才使用这种“笨”办法的。
对于初学者来说,画圆经常用类似“右转1度然后前进x步”的方法,但这样显然不够精确而且调整大小和圆心时也很麻烦。为了便于确定圆的大小和位置,首先想到的是(x-a)²+(y-b)²=r²,其中a、b为圆心位置,本题中我们默认在(0.0)所以简化为(²+y²=r²,这样一来设置三个变量,以x值的往复变化计算对应的y()值即可(话说博客插公式怎么这么难写)。象限变化时记得加个负号。
写完测试了一下,画圆没问题,但是画圆的过程竟然不是匀速的