import simple3d import random import sys import math # radians for rotations theta = math.radians(180 / 43) # divide semicircle into 43 segments num_cubes = 86 # vertical displacement per cube incr = 0.02 # cube size edge_len = 0.3 print('init...') fish = simple3d.Simple3d() first_pt = [0.0, 0.0, 3.0] fish.append_vertex(first_pt[0], first_pt[1], first_pt[2]) #0 alpha = 1 while alpha < (8 * num_cubes): new_pt = simple3d.rotY(first_pt, alpha * theta) #new_pt[2] += (alpha*incr) print('alpha, y, z = ', alpha, new_pt[1], new_pt[2]) # vertices fish.append_vertex(new_pt[0], new_pt[1], new_pt[2]) #1 fish.append_vertex(new_pt[0] + edge_len, new_pt[1], new_pt[2]) #2 fish.append_vertex(new_pt[0] + edge_len, new_pt[1] + edge_len, new_pt[2]) #3 fish.append_vertex(new_pt[0] + edge_len, new_pt[1] + edge_len, new_pt[2] + edge_len) #4
if len(sys.argv) > 1 : num_bldgs = int(sys.argv[1]) ground_level = -0.3 min_height = 0.1 max_height = 1. min_width = 0.2 max_width = 1. min_depth = 0.2 max_depth = 1. x = -1. z = -0.2 spacing = 0.02 city = simple3d.Simple3d() for i in range(num_bldgs) : max_z_this_street = 0 for j in range(num_bldgs) : width = min_width + random.random() * max_width depth = min_depth + random.random() * max_depth # keep track of the "deepest" bldg on this "street" if depth > max_z_this_street : max_z_this_street = depth height = min_height + random.random() * max_height bldg = Bldg(width, height, depth, [x, ground_level, z]) city.assimilate(bldg) x += (width + spacing) x = -1. # make sure the next "street" doesn't overlap any bldg on this one z += (max_z_this_street + spacing)