コード例 #1
0
ファイル: ymbr.py プロジェクト: macginitie/cafd
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
コード例 #2
0
ファイル: cityblock1.py プロジェクト: macginitie/cafd
 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)