Exemplo n.º 1
0
 def test_s3(self):
     D_tet = xyz_volume((D, D, D, D, D, D))
     a = Vector((0.5, 0.0, 0.0))
     b = Vector((0.0, 0.5, 0.0))
     c = Vector((0.0, 0.0, 0.5))
     R_cube = 6 * make_tet(a, b, c)[1]
     self.assertAlmostEqual(D_tet * Syn3, R_cube, 4)
Exemplo n.º 2
0
 def test_phi_tet(self):
     "edges from common vertex: phi, 1/phi, 1"
     p = Vector((1, 0, 0))
     q = Vector((1, 0, 0)).rotz(60) * PHI
     r = Vector((0.5, root3 / 6, root6 / 3)) * 1 / PHI
     result = make_tet(p, q, r)
     self.assertAlmostEqual(result[0], 1, 7)
Exemplo n.º 3
0
 def test_360(self):
     rV = Quaternion(0, 1, 0, 0)
     one_deg = radians(1)
     rQ = rotator(Vector((0, 1, 0)), one_deg)
     for _ in range(360):
         rV = rQ * rV * ~rQ
     self.assertTrue(rV.vector() == Vector((1, 0, 0)))
Exemplo n.º 4
0
 def test_s3(self):
     D_tet = Tetrahedron(D, D, D, D, D, D)
     a = Vector((0.5, 0.0, 0.0))
     b = Vector((0.0, 0.5, 0.0))
     c = Vector((0.0, 0.0, 0.5))
     R_cube = 6 * make_tet(a, b, c)[1]
     self.assertAlmostEqual(D_tet.xyz_volume() * S3, R_cube, 4)
Exemplo n.º 5
0
 def test_xyz_cube(self):
     a = Vector((0.5, 0.0, 0.0))
     b = Vector((0.0, 0.5, 0.0))
     c = Vector((0.0, 0.0, 0.5))
     R_octa = Tetrahedron(a.length(), b.length(), c.length(),
                          (a - b).length(), (b - c).length(),
                          (c - a).length()).xyz_volume()
     self.assertAlmostEqual(6 * R_octa, Decimal(1), 4)  # good to 4 places
Exemplo n.º 6
0
 def test_quarter_octahedron(self):
     a = Vector((1, 0, 0))
     b = Vector((0, 1, 0))
     c = Vector((0.5, 0.5, root2 / 2))
     tet = Tetrahedron(a.length(), b.length(), c.length(), (a - b).length(),
                       (b - c).length(), (c - a).length())
     self.assertAlmostEqual(tet.ivm_volume(), Decimal(1),
                            5)  # good to 5 places
Exemplo n.º 7
0
 def test_octant(self):
     x = Vector((0.5, 0, 0))
     y = Vector((0, 0.5, 0))
     z = Vector((0, 0, 0.5))
     tet = Tetrahedron(x.length(), y.length(), z.length(), (x - y).length(),
                       (x - z).length(), (y - z).length())
     self.assertAlmostEqual(tet.xyz_volume(),
                            Decimal(1) / Decimal(6), 5)  # good to 5 places
Exemplo n.º 8
0
 def test_s3(self):
     D_tet = Tetrahedron(D, D, D, D, D, D)
     a = Vector((0.5, 0.0, 0.0))
     b = Vector((0.0, 0.5, 0.0))
     c = Vector((0.0, 0.0, 0.5))
     R_cube = 6 * Tetrahedron(a.length(), b.length(), c.length(),
                              (a - b).length(), (b - c).length(),
                              (c - a).length()).xyz_volume()
     self.assertAlmostEqual(D_tet.xyz_volume() * S3, R_cube, 4)
Exemplo n.º 9
0
    def __init__(self):
        # POV-Ray
        self.edge_color = "rgb <255/255, 20/255, 147/255>"
        self.edge_radius = 0.03
        self.vert_color = "rgb <255/255, 20/255, 147/255>"
        self.vert_radius = 0.03
        self.face_color = "rgb <0, 0, 0>"

        verts = {}
        verts['A'] = Vector((1, 0.5, math.sqrt(2) / 2))
        verts['B'] = Vector((1, -0.5, math.sqrt(2) / 2))
        verts['C'] = Vector((1, -0.5, -math.sqrt(2) / 2))
        verts['D'] = Vector((1, 0.5, -math.sqrt(2) / 2))
        verts['E'] = Vector((-1, 0.5, math.sqrt(2) / 2))
        verts['F'] = Vector((-1, -0.5, math.sqrt(2) / 2))
        verts['G'] = Vector((-1, -0.5, -math.sqrt(2) / 2))
        verts['H'] = Vector((-1, 0.5, -math.sqrt(2) / 2))

        self.name = "Cuboid"
        self.volume = 8  # per Concentric Hierarchy
        self.center = ORIGIN

        # 8 vertices
        self.vertexes = verts

        # 6 faces
        self.faces = (('A', 'B', 'C', 'D'), ('E', 'F', 'G', 'H'),
                      ('A', 'E', 'F', 'B'), ('D', 'H', 'G', 'C'),
                      ('A', 'E', 'H', 'D'), ('B', 'F', 'G', 'C'))

        self.edges = self._distill()
Exemplo n.º 10
0
 def test_octant(self):
     x = Vector((1/2,0,0))
     y = Vector((0,1/2,0))
     z = Vector((0,0,1/2))
     tet = Tetrahedron(x.length(), y.length(), z.length(), 
             (x-y).length(), (x-z).length(), (y-z).length())
     self.assertAlmostEqual(tet.xyz_volume(), 1/6, 5) # good to 5 places
Exemplo n.º 11
0
 def test_xyz_cube(self):
     a = Vector((0.5, 0.0, 0.0))
     b = Vector((0.0, 0.5, 0.0))
     c = Vector((0.0, 0.0, 0.5))
     tet = Tetrahedron(a.length(), b.length(), c.length(), 
             (a-b).length(), (b-c).length(), (c-a).length())
     self.assertAlmostEqual(6*tet.xyz_volume(), 1.0, 4) # good to 4 places  
Exemplo n.º 12
0
 def test_octahedron(self):
     a = Vector((1,0,0))
     b = Vector((0,1,0))
     c = Vector((0.5,0.5,sqrt(2)/2))
     tet = Tetrahedron(a.length(), b.length(), c.length(), 
             (a-b).length(), (b-c).length(), (c-a).length())
     self.assertAlmostEqual(tet.ivm_volume(), 1.0, 5) # good to 5 places  
Exemplo n.º 13
0
 def test_s3(self):
     D_tet = Tetrahedron(D, D, D, D, D, D)
     a = Vector((0.5, 0.0, 0.0))
     b = Vector((0.0, 0.5, 0.0))
     c = Vector((0.0, 0.0, 0.5))
     R_cube = 6 * Tetrahedron(a.length(), b.length(), c.length(), 
             (a-b).length(), (b-c).length(), (c-a).length()).xyz_volume()
     self.assertAlmostEqual(D_tet.xyz_volume() * sqrt(9/8), R_cube, 4)
Exemplo n.º 14
0
 def test_xyz_area4(self):
     v1 = Vector((D, 0, 0))
     v2 = Vector((0, D, 0))
     xyz_area = make_tri(v1, v2)[1]
     self.assertAlmostEqual(xyz_area, 2)
Exemplo n.º 15
0
 def test_xyz_cube(self):
     a = Vector((0.5, 0.0, 0.0))
     b = Vector((0.0, 0.5, 0.0))
     c = Vector((0.0, 0.0, 0.5))
     R_octa = make_tet(a, b, c)
     self.assertAlmostEqual(6 * R_octa[1], 1, 4)  # good to 4 places
Exemplo n.º 16
0
 def test_quarter_octahedron(self):
     a = Vector((1, 0, 0))
     b = Vector((0, 1, 0))
     c = Vector((0.5, 0.5, root2 / 2))
     tet = make_tet(a, b, c)
     self.assertAlmostEqual(tet[0], 1, 5)  # good to 5 places
Exemplo n.º 17
0
 def test_octant(self):
     x = Vector((0.5, 0, 0))
     y = Vector((0, 0.5, 0))
     z = Vector((0, 0, 0.5))
     tet = make_tet(x, y, z)
     self.assertAlmostEqual(tet[1], 1 / 6, 5)  # good to 5 places
Exemplo n.º 18
0
 def test_area_martian3(self):
     qx = Vector((D,0,0)).quadray()
     qy = Vector((R,rt2(3)/2,0)).quadray()
     result = qx.area(qy)
     self.assertAlmostEqual(result, 1, 7)
Exemplo n.º 19
0
 def test_x(self):
     rV = Quaternion(0, 1, 0, 0)
     rQ = rotator(Vector((0, 1, 0)), pi)
     newQ = rQ * rV * ~rQ
     self.assertTrue(newQ.vector() == Vector((-1, 0, 0)))
Exemplo n.º 20
0
 def vector(self):
     return Vector((self.x, self.y, self.z))
Exemplo n.º 21
0
 def test_area_earthling1(self):
     vx = Vector((1,0,0))
     vy = Vector((0,1,0))
     result = vx.area(vy)
     self.assertAlmostEqual(result, 1)        
Exemplo n.º 22
0
 def test_area_earthling2(self):
     vx = Vector((2,0,0))
     vy = Vector((1,rt2(3),0))
     result = vx.area(vy)
     self.assertAlmostEqual(result, 2*rt2(3))