#万花尺程序,通过命令行输入R,r,a 三个数来产生最终效果。 ''' x(t) = (R+r)cos(t)-(r+a)cos((R+r)t/r) y(t) = (R+e)sin(t)-(r+a)sin((R+r)t/r) ''' import sys import math from stdpackage import stddraw,stdarray def draw_spirograph(R,r,a): stddraw.setXscale(-40,40) stddraw.setYscale(-40,40) l = 1500 x = stdarray.create1D(l,0) y = stdarray.create1D(l,0) for t in range(l): x[t] = (R+r)*math.cos(t) - (r+a) * math.cos((R+r)*t/r) y[t] = (R+r)*math.sin(t) - (r+a) * math.sin((R+r)*t/r) for t in range(l+1): if t >= l-1: pass else: if t ==0: stddraw.setPenColor(stddraw.RED) if t==l/3: stddraw.setPenColor(stddraw.DARK_BLUE) if t == 2*l/3: stddraw.setPenColor(stddraw.BOOK_BLUE) stddraw.line(x[t],y[t],x[t+1],y[t+1]) stddraw.show(5) stddraw.show() def main(): R = int(sys.argv[1]) r = int(sys.argv[2]) a = int(sys.argv[3]) draw_spirograph(R,r,a) main()