David Zuccaro wrote: > Hi, > > I have been learning python and I have recently written a little > program that creates Hilbert curves which I submit to this list for > critique and review: > > # Hilbert Curve > > # David Zuccaro > # 18/09/2014 > > import sys > import pygame > import math > > class cursor: > > def __init__(self, a): # a should be a list of 2 numbers ie a point. > self.a = a > > def line(self, a): > # draw a line from he current position from the new position; > update current position > pygame.draw.lines(window, (255, 255, 255), True, [[self.a[0], > self.a[1]], [self.a[0] + a[0], self.a[1] + a[1]]], 1) > self.a[0] = self.a[0] + a[0] > self.a[1] = self.a[1] + a[1] > > def hilbert(self, kind, order): > row = ((1,0,0,2), (0,1,1,3), (3,2,2,0), (2,3,3,1)) # > hilbert curve definition table 0 = A 1 = B ... > dir = ((0,3,2), (3,0,1), (1,2,3), (2,1,0)) # > definition of A, B, C, D > orient = ((0,-1), (-1,0), (0,1), (1,0)) # definition of up, > left, down, right > dist = 30 # length of segment > if order > 0: > for j in range(4): > > self.hilbert(row[kind][j], order - 1) # keep on > hilberting until order = 0 > > if j < 3: > self.line([x * dist for x in orient[dir[kind][j]]]) > > #this was the previous code but I thought it would be cleaner if > # more abstruse to do this all in one line ^ > > # if dir[kind][j] == 0: > # self.line(0, -dist) #up > > # if dir[kind][j] == 1: > # self.line(-dist, 0) #left > > # if dir[kind][j] == 2: > # self.line(0,dist) #down > > # if dir[kind][j] == 3: > # self.line(dist, 0) #right > > > pygame.init() > > #create the screen > window = pygame.display.set_mode((1900, 1000)) > > david = cursor([10,970]) # starting point increasing y moves down screen > > david.hilbert(0, 5) # create a fifth order hilbert curve > > #draw it to the screen > pygame.display.flip() > > #input handling (somewhat boilerplate code): > while True: > for event in pygame.event.get(): > if event.type == pygame.QUIT: > sys.exit(0) > > #end > > Output is here: > http://members.optuszoo.com.au/~david.zuccaro/hilbert2.png > > https://en.wikipedia.org/wiki/Hilbert_curve > > > > > _______________________________________________ > luv-main mailing list > [email protected] > http://lists.luv.asn.au/listinfo/luv-main Which by it's rarity reminds us why luv-prog ?; is sadly no more !; are people taking their programming problems to specialist language lists or are their no programming problems ? Just curious regards Rohan McLeod
_______________________________________________ luv-main mailing list [email protected] http://lists.luv.asn.au/listinfo/luv-main
