コード例 #1
0
def generate_octahedron(side_length):
    ''' Generate an octahedron from the given side length. 
      And return an sequence from triangles composing the octahedron.
  '''

    quad_xy = generate_polygon_on_xy_side_length(
        4, side_length, 45)  # Generate an quad on the plan XY.
    # You can use the function: generate_polygon_on_xy_radius(...) instead.

    quad_xz = generate_polygon_on_xz_side_length(
        4, side_length, 45)  # Generate an quad on the plan XZ.
    # You can use the function: generate_polygon_on_xz_radius(...) instead.

    quad_yz = generate_polygon_on_yz_side_length(
        4, side_length, 45)  # Generate an quad on the plan YZ.
    # You can use the function: generate_polygon_on_yz_radius(...) instead.

    return ((quad_xy[0], quad_yz[0],
             quad_yz[1]), (quad_xy[0], quad_yz[1],
                           quad_yz[2]), (quad_xy[0], quad_yz[2], quad_yz[3]),
            (quad_xy[0], quad_yz[3],
             quad_yz[0]), (quad_xy[2], quad_yz[0],
                           quad_yz[1]), (quad_xy[2], quad_yz[1], quad_yz[2]),
            (quad_xy[2], quad_yz[2], quad_yz[3]), (quad_xy[2], quad_yz[3],
                                                   quad_yz[0])
            )  # Return 8 triangles sequences who form assembled an octahedron.
コード例 #2
0
def generate_octahedron(side_length) :
  ''' Generate an octahedron from the given side length. 
      And return an sequence from triangles composing the octahedron.
  '''
  
  quad_xy=generate_polygon_on_xy_side_length(4,side_length,45)  # Generate an quad on the plan XY.
          # You can use the function: generate_polygon_on_xy_radius(...) instead.
          
  quad_xz=generate_polygon_on_xz_side_length(4,side_length,45)  # Generate an quad on the plan XZ.
         # You can use the function: generate_polygon_on_xz_radius(...) instead.
         
  quad_yz=generate_polygon_on_yz_side_length(4,side_length,45)  # Generate an quad on the plan YZ.
         # You can use the function: generate_polygon_on_yz_radius(...) instead.
         
  return ((quad_xy[0],quad_yz[0],quad_yz[1]),(quad_xy[0],quad_yz[1],quad_yz[2]),(quad_xy[0],quad_yz[2],quad_yz[3]),(quad_xy[0],quad_yz[3],quad_yz[0]),
	  (quad_xy[2],quad_yz[0],quad_yz[1]),(quad_xy[2],quad_yz[1],quad_yz[2]),(quad_xy[2],quad_yz[2],quad_yz[3]),(quad_xy[2],quad_yz[3],quad_yz[0]) 
	  ) # Return 8 triangles sequences who form assembled an octahedron.
コード例 #3
0
def generate_polyhedron_26_faces(side_length):
    ''' Generate an 26 faces polyhedron from the given side length 
      and return an array of triangles and an array of quads
      composing the 26 faces of the polyhedron.
  '''

    # Generation of octogons, bases of the 32 polyhedron mesh.
    octogon1 = generate_polygon_on_xy_side_length(8, side_length)
    octogon2 = generate_polygon_on_xy_side_length(8, side_length)
    octogon3 = generate_polygon_on_xz_side_length(8, side_length)
    octogon4 = generate_polygon_on_xz_side_length(8, side_length)
    octogon5 = generate_polygon_on_yz_side_length(8, side_length)
    octogon6 = generate_polygon_on_yz_side_length(8, side_length)

    # Translation to construct the polyhedron mesh.
    res = []
    for v in octogon1:
        res.append(translate(v, 0.0, 0.0, -side_length / 2.0))
    octogon1 = res

    # Translation to construct the polyhedron mesh.
    res = []
    for v in octogon2:
        res.append(translate(v, 0.0, 0.0, side_length / 2.0))
    octogon2 = res

    # Translation to construct the polyhedron mesh.
    res = []
    for v in octogon3:
        res.append(translate(v, 0.0, -side_length / 2.0, 0.0))
    octogon3 = res

    # Translation to construct the polyhedron mesh.
    res = []
    for v in octogon4:
        res.append(translate(v, 0.0, side_length / 2.0, 0.0))
    octogon4 = res

    # Translation to construct the polyhedron mesh.
    res = []
    for v in octogon5:
        res.append(translate(v, -side_length / 2.0, 0.0, 0.0))
    octogon5 = res

    # Translation to construct the polyhedron mesh.
    res = []
    for v in octogon6:
        res.append(translate(v, side_length / 2.0, 0.0, 0.0))
    octogon6 = res

    # We construct the polyhedron quads:
    quads_xy = []
    i = -1
    while i < len(octogon1) - 1:
        # by iterating overs octogon1 and octogon2
        # which are in the plan XY.
        # With clever indexing.
        quads = []
        quads.append(octogon1[i])
        quads.append(octogon1[i + 1])
        quads.append(octogon2[i + 1])
        quads.append(octogon2[i])
        quads_xy.append(quads)
        i += 1

    # We construct the polyhedron quads:
    quads_xz = []
    i = -1
    while i < len(octogon3) - 1:
        # by iterating overs octogon3 and octogon4
        # which are in the plan XZ.
        # With clever indexing.
        quads = []
        quads.append(octogon3[i])
        quads.append(octogon3[i + 1])
        quads.append(octogon4[i + 1])
        quads.append(octogon4[i])
        quads_xz.append(quads)
        i += 1

    # We construct the polyhedron quads:
    quads_yz = []
    i = -1
    while i < len(octogon1) - 1:
        # by iterating overs octogon3 and octogon4
        # which are in the plan XZ.
        # With clever indexing.
        quads = []
        quads.append(octogon5[i])
        quads.append(octogon5[i + 1])
        quads.append(octogon6[i + 1])
        quads.append(octogon6[i])
        quads_yz.append(quads)
        i += 1

    # Finally we keep only the needed quads. To not have doubles.
    polyhedron = []
    for v in quads_xz:
        polyhedron.append(v)

    polyhedron.append(quads_xy[0])
    polyhedron.append(quads_xy[1])
    polyhedron.append(quads_xy[2])
    polyhedron.append(quads_xy[4])
    polyhedron.append(quads_xy[5])
    polyhedron.append(quads_xy[6])

    polyhedron.append(quads_yz[0])
    polyhedron.append(quads_yz[2])
    polyhedron.append(quads_yz[4])
    polyhedron.append(quads_yz[6])

    # Finally we construct the triangles of the polyhedron.
    triangle1 = [polyhedron[1][1], polyhedron[3][0], polyhedron[12][3]]
    triangle2 = [polyhedron[3][1], polyhedron[5][0], polyhedron[12][0]]
    triangle3 = [polyhedron[5][1], polyhedron[6][1], polyhedron[12][1]]
    triangle4 = [polyhedron[7][1], polyhedron[1][0], polyhedron[12][2]]

    triangle5 = [polyhedron[7][2], polyhedron[1][3], polyhedron[9][3]]
    triangle6 = [polyhedron[5][3], polyhedron[4][3], polyhedron[9][1]]
    triangle7 = [polyhedron[6][3], polyhedron[7][3], polyhedron[9][0]]
    triangle8 = [polyhedron[1][2], polyhedron[2][2], polyhedron[9][2]]

    return [
        triangle1, triangle2, triangle3, triangle4, triangle5, triangle6,
        triangle7, triangle8
    ], polyhedron
コード例 #4
0
def generate_polyhedron_26_faces(side_length) :
  ''' Generate an 26 faces polyhedron from the given side length 
      and return an array of triangles and an array of quads
      composing the 26 faces of the polyhedron.
  '''
  
  # Generation of octogons, bases of the 32 polyhedron mesh.
  octogon1=generate_polygon_on_xy_side_length(8,side_length)
  octogon2=generate_polygon_on_xy_side_length(8,side_length)
  octogon3=generate_polygon_on_xz_side_length(8,side_length)
  octogon4=generate_polygon_on_xz_side_length(8,side_length)
  octogon5=generate_polygon_on_yz_side_length(8,side_length)
  octogon6=generate_polygon_on_yz_side_length(8,side_length)
  
  # Translation to construct the polyhedron mesh.
  res=[] 
  for v in octogon1 :
    res.append(translate(v,0.0,0.0,-side_length/2.0))
  octogon1=res
  
  # Translation to construct the polyhedron mesh.
  res=[]
  for v in octogon2 :
    res.append(translate(v,0.0,0.0,side_length/2.0))
  octogon2=res 
  
  # Translation to construct the polyhedron mesh.
  res=[] 
  for v in octogon3 :
    res.append(translate(v,0.0,-side_length/2.0,0.0))
  octogon3=res
  
  # Translation to construct the polyhedron mesh.
  res=[]
  for v in octogon4 :
    res.append(translate(v,0.0,side_length/2.0,0.0))
  octogon4=res 
  
  # Translation to construct the polyhedron mesh.
  res=[] 
  for v in octogon5 :
    res.append(translate(v,-side_length/2.0,0.0,0.0))
  octogon5=res
  
  # Translation to construct the polyhedron mesh.
  res=[]
  for v in octogon6 :
    res.append(translate(v,side_length/2.0,0.0,0.0))
  octogon6=res 
  
  # We construct the polyhedron quads:
  quads_xy=[]
  i=-1
  while i < len(octogon1)-1 :
    # by iterating overs octogon1 and octogon2
    # which are in the plan XY.
    # With clever indexing.
    quads=[]
    quads.append(octogon1[i])
    quads.append(octogon1[i+1])
    quads.append(octogon2[i+1])
    quads.append(octogon2[i])
    quads_xy.append(quads)
    i += 1
  
  # We construct the polyhedron quads:
  quads_xz=[]
  i=-1
  while i < len(octogon3)-1 :
    # by iterating overs octogon3 and octogon4
    # which are in the plan XZ.
    # With clever indexing.
    quads=[]
    quads.append(octogon3[i])
    quads.append(octogon3[i+1])
    quads.append(octogon4[i+1])
    quads.append(octogon4[i])
    quads_xz.append(quads)
    i += 1 
  
  # We construct the polyhedron quads:
  quads_yz=[]
  i=-1
  while i < len(octogon1)-1 :
    # by iterating overs octogon3 and octogon4
    # which are in the plan XZ.
    # With clever indexing.
    quads=[]
    quads.append(octogon5[i])
    quads.append(octogon5[i+1])
    quads.append(octogon6[i+1])
    quads.append(octogon6[i])
    quads_yz.append(quads)
    i += 1  
  
  
  # Finally we keep only the needed quads. To not have doubles.
  polyhedron=[]
  for v in quads_xz :
    polyhedron.append(v)
    
  polyhedron.append(quads_xy[0])
  polyhedron.append(quads_xy[1])
  polyhedron.append(quads_xy[2])
  polyhedron.append(quads_xy[4])
  polyhedron.append(quads_xy[5])
  polyhedron.append(quads_xy[6])
  
  polyhedron.append(quads_yz[0])
  polyhedron.append(quads_yz[2])
  polyhedron.append(quads_yz[4])
  polyhedron.append(quads_yz[6])
  
  # Finally we construct the triangles of the polyhedron.
  triangle1=[polyhedron[1][1],polyhedron[3][0],polyhedron[12][3]]
  triangle2=[polyhedron[3][1],polyhedron[5][0],polyhedron[12][0]]
  triangle3=[polyhedron[5][1],polyhedron[6][1],polyhedron[12][1]]
  triangle4=[polyhedron[7][1],polyhedron[1][0],polyhedron[12][2]]
  
  triangle5=[polyhedron[7][2],polyhedron[1][3],polyhedron[9][3]]
  triangle6=[polyhedron[5][3],polyhedron[4][3],polyhedron[9][1]]
  triangle7=[polyhedron[6][3],polyhedron[7][3],polyhedron[9][0]]
  triangle8=[polyhedron[1][2],polyhedron[2][2],polyhedron[9][2]]
  
  return [triangle1,triangle2,triangle3,triangle4,triangle5,triangle6,triangle7,triangle8], polyhedron