#!/usr/bin/python3 # ================================================================== # Draw a square spiral # ================================================================== import graphics as gr import user_interface as ui import coordinate_conversion as cc import draw_axes as ax window_width = 801 window_height = 801 color = ['red','green','blue','black','purple'] # ------------------------------------------------------------------- # ---- draw line # ------------------------------------------------------------------- def draw_line(win,x1,y1,x2,y2,color): wx1,wy1 = cc.center_to_win_coords(x1,y1, window_width,window_height) wx2,wy2 = cc.center_to_win_coords(x2,y2, window_width,window_height) l = gr.Line(gr.Point(wx1,wy1),gr.Point(wx2,wy2)) l.setWidth(3) l.setFill(color) l.draw(win) # ------------------------------------------------------------------- # ---- draw a square spiral # ------------------------------------------------------------------- def draw_a_square_sprial(win,x,y,l): c = 0 # line color d = 0 # draw direction # ---- draw the lines x1 = x # start of line x coord y1 = y # start of line y coord ll = 0 # length of line for _ in range(16): if d == 0: ll += l x2 = x1 # end of line x coord y2 = ll + y1 # end of line Y coord draw_line(win,x1,y1,x2,y2,color[c]) x1 = x2 y1 = y2 d = 1 elif d == 1: x2 = ll + x1 y2 = y1 draw_line(win,x1,y1,x2,y2,color[c]) x1 = x2 y1 = y2 d = 2 elif d == 2: ll += l x2 = x1 y2 = -(ll - y1) draw_line(win,x1,y1,x2,y2,color[c]) x1 = x2 y1 = y2 d = 3 elif d == 3: x2 = -(ll - x1) y2 = y1 draw_line(win,x1,y1,x2,y2,color[c]) x1 = x2 y1 = y2 d = 0 ##ui.pause() c += 1 if not (c < len(color)): c = 0 # ------------------------------------------------------------------- # ---- main # ------------------------------------------------------------------- win = gr.GraphWin("Draw Square Spiral",window_width,window_height) win.setBackground("white") ax.draw_xy_axes(win,True) draw_a_square_sprial(win,0,0,50) ui.pause() win.close()