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

Reply via email to