solution_050k.py



# ---- 3D Tetrahedron -----------------------------------------------

# ---- wire frame (tetrahedron) corner points
pts = [ (0,100,0),  (50,0,0),  (-50,0,0), (0,0,50) ]
# ---- pivot point
pivot = (0, 0, 0)
# ---- wireframe (tetrahedron) lines
lns = [ (pts[0],pts[1]), (pts[0],pts[2]), (pts[0],pts[3]), 
        (pts[1],pts[2]), (pts[2],pts[3]), (pts[3],pts[1]) ]


# ----------3D Square Pyramid ---------------------------------------

# ---- wire frame (square pyramid) corner points
pts = [ (0,100,0), (50,0,-50), (50,0,50), (-50,0,50), (-50,0,-50) ]
# ---- pivot point
pivot = (0, 0, 0)
# ---- wire frame (square pyramid) lines
lns = [ (pts[0],pts[1]), (pts[0],pts[2]), (pts[0],pts[3]),
        (pts[0],pts[4]), (pts[1],pts[2]), (pts[2],pts[3]),
        (pts[3],pts[4]), (pts[4],pts[1]) ]


# ----------3D Octahedron -------------------------------------------

# ---- wire frame (octahedron) corner points
pts = [ (0,100,0),  (50,0,-50),  (50,0,50), (-50,0,50), (-50,0,-50),
        (0,-100,0) ]
# ---- pivot point
pivot = (0, 0, 0)
# ---- wire frame (octahedron) lines
lns = [ (pts[0],pts[1]), (pts[0],pts[2]), (pts[0],pts[3]),
        (pts[0],pts[4]),
        (pts[1],pts[2]), (pts[2],pts[3]), (pts[3],pts[4]),
        (pts[4],pts[1]),
        (pts[5],pts[1]), (pts[5],pts[2]), (pts[5],pts[3]),
        (pts[5],pts[4]) ]


# ----------3D Cube ------------------------------------------------

# ---- wire frame cube (points, lines, surfaces, normal vectors)
#
#         5+----------+6
#         /|         /|
#        / |        / |
#      1+----------+2 |
#       |  |       |  |
#       | 4+-------|--+7
#       | /        | /
#       |/         |/
#      0+----------+3
#
#
# ---- wire frame (cube) corner points
pts = [ (-50,-50,50),  (-50,50,50),             # point 0,1
        (50,50,50),    (50,-50,50),             # point 2,3
        (-50,-50,-50), (-50,50,-50),            # point 4,5
        (50,50,-50),   (50,-50,-50) ]           # point 5,7
#
# ---- pivot point
pivot = (0, 0, 0)
#
# ---- wire frame (cube) lines
lns = [ (pts[0],pts[1]), (pts[1],pts[2]),       # line 0,1
        (pts[2],pts[3]), (pts[3],pts[0]),       # line 2,3
        (pts[4],pts[5]), (pts[5],pts[6]),       # line 4,5
        (pts[6],pts[7]), (pts[7],pts[4]),       # line 6,7
        (pts[0],pts[4]), (pts[1],pts[5]),       # line 8,9
        (pts[2],pts[6]), (pts[3],pts[7]) ]      # line 10,11
#
# ---- wire frame (cube) surfaces
sur = [ (pts[0],pts[1],pts[2],pts[3]),          # surface 0  red
        (pts[7],pts[6],pts[5],pts[4]),          # surface 1  green
        (pts[4],pts[5],pts[1],pts[0]),          # surface 2  blue
        (pts[3],pts[2],pts[6],pts[7]),          # surface 3  cyan
        (pts[1],pts[5],pts[6],pts[2]),          # surface 4  yellow
        (pts[0],pts[3],pts[7],pts[4]) ]         # surface 5  white
#
# ---- wire frame (cube) normal vector points for each surface
# ---- (points used to calculate normal vector)
nvpts = [ (pts[0],pts[1],pts[2]),               # nv surface 0
          (pts[7],pts[6],pts[5]),               # nv surface 1
          (pts[4],pts[5],pts[1]),               # nv surface 2
          (pts[3],pts[2],pts[6]),               # nv surface 3
          (pts[1],pts[5],pts[6]),               # nv surface 4
          (pts[0],pts[3],pts[7]) ]              # nv surface 5


# ----------3D Letter T ---------------------------------------------

# ---- wire frame (letter T) corner points
pts = [ (120,40,20),    (120,0,20),  (20,0,20),    (20,-150,20),
        (-20,-150,20),  (-20,0,20),  (-120,0,20),  (-120,40,20),
        (120,40,-20),   (120,0,-20), (20,0,-20),   (20,-150,-20),
        (-20,-150,-20), (-20,0,-20), (-120,0,-20), (-120,40,-20) ]
# ---- pivot point
pivot = (0, 0, 0)
# ---- wire frame (Letter T) lines
lns = [ (pts[0], pts[1]),  (pts[1], pts[2]),
        (pts[2], pts[3]),  (pts[3], pts[4]),
        (pts[4], pts[5]),  (pts[5], pts[6]),
        (pts[6], pts[7]),  (pts[7], pts[0]),
        (pts[8], pts[9]),  (pts[9], pts[10]),
        (pts[10],pts[11]), (pts[11],pts[12]),
        (pts[12],pts[13]), (pts[13],pts[14]),
        (pts[14],pts[15]), (pts[15],pts[8]),
        (pts[0], pts[8]),  (pts[1], pts[9]),
        (pts[2], pts[10]), (pts[3], pts[11]),
        (pts[4], pts[12]), (pts[5], pts[13]),
        (pts[6], pts[14]), (pts[7], pts[15]) ]


# ----------2D Diamond ----------------------------------------------

# ---- wire frame (2D diamond) corner point
pts = [ (0,0,0), (-50,75,0), (0,150,0) ,(50,75,0) ]
# ---- pivot point
pivot = (0, 0, 0)
# ---- wire frame (2D diamond) lines
lns = [ (pts[0],pts[1]), (pts[1], pts[2]), (pts[2],pts[3]), (pts[3],pts[0]) ] 


# ----------2D Pentagon ----------------------------------------------

# ---- wire frame (2D pentagon) corner point
pts = [ (0,-100,0), (-95,-31,0), (-59,81,0) ,(59,81,0), (95,-31,0) ]
# ---- pivot point
pivot = (0, 0, 0)
# ---- wire frame (2D pentagon) lines
lns = [ (pts[0],pts[1]), (pts[1], pts[2]), (pts[2],pts[3]), (pts[3],pts[4]),
        (pts[4],pts[0]) ] 


# ----------3D Diamond With Facets ----------------------------------

# ---- wire frame (3D diamond with facets) corner point
pts = [ (0,-50,0),  (-50,50,0),  (-25,40,40), (25,40,40), (50,50,0),
        (-30,65,0), (-10,60,35), (10,60,35),  (30,65,0) ]
# ---- pivot point
pivot = (0, 0, 0)
# ---- wire frame (3D diamond with facets) lines
lns = [ (pts[0],pts[1]), (pts[0],pts[2]), (pts[0],pts[3]),
        (pts[0],pts[4]), (pts[1],pts[5]), (pts[2],pts[6]),
        (pts[3],pts[7]), (pts[4],pts[8]), (pts[5],pts[6]),
        (pts[6],pts[7]), (pts[7],pts[8]), (pts[1],pts[2]),
        (pts[2],pts[3]), (pts[3],pts[4]) ]


# ----------3D Wire Frame Mystery Object ----------------------------

# ---- wire frame (3D mystery object) corner points
pts = [ (-50,-50,50),  (-50,50,50),  (50,50,50),  (50,-50,50),
        (-50,-50,-50), (-50,50,-50), (50,50,-50), (50,-50,-50),
        (-100,0,0),    (100,0,0),    (0,-100,0),  (0,100,0) ]
# ---- pivot point
pivot = (0.0, 0.0, 0.0)
# ---- wire frame (3D mystery object) lines
lns = [ (pts[0],pts[1]),  (pts[1],pts[2]),
        (pts[2],pts[3]),  (pts[3],pts[0]),
        (pts[4],pts[5]),  (pts[5],pts[6]),
        (pts[6],pts[7]),  (pts[7],pts[4]),
        (pts[0],pts[4]),  (pts[1],pts[5]),
        (pts[2],pts[6]),  (pts[3],pts[7]),

        (pts[0],pts[8]),  (pts[1],pts[8]),
        (pts[5],pts[8]),  (pts[4],pts[8]),
        (pts[3],pts[9]),  (pts[2],pts[9]),
        (pts[6],pts[9]),  (pts[7],pts[9]), 

        (pts[1],pts[11]), (pts[5],pts[11]),
        (pts[6],pts[11]), (pts[2],pts[11]),
        (pts[0],pts[10]), (pts[4],pts[10]),
        (pts[7],pts[10]), (pts[3],pts[10]) ]