示例#1
0
def test_rotate():
    q = Quaternion.from_euler(Point(0, 0, np.pi / 2))

    c = Coord.from_nothing(10)

    rc = c.rotate(q)
    assert rc.origin == P0()
    np.testing.assert_almost_equal(rc.x_axis.data, PY(1, 10).data)
    np.testing.assert_almost_equal(rc.y_axis.data, PX(-1, 10).data)
    np.testing.assert_almost_equal(rc.z_axis.data, PZ(1, 10).data)
示例#2
0
def test_from_coords():
    c1 = Coord.from_xy(P0(), PX(), PY())
    c2 = Coord.from_xy(P0(), PY(), PZ())
    trans_to = Transformation.from_coords(c1, c2)
    trans_from = Transformation.from_coords(c2, c1)

    ps = Point(np.random.random((100, 3)))

    np.testing.assert_array_almost_equal(
        ps.data,
        trans_from.translate(trans_to.translate(ps)).data)

    qs = Quaternion.from_euler(ps)
    np.testing.assert_array_almost_equal(
        qs, trans_from.rotate(trans_to.rotate(qs)))
示例#3
0
 def transform(self,
               transformantion: Transformation = Transformation(
                   Point(0.75, 0, 0),
                   Quaternion.from_euler(Point(np.pi, 0, -np.pi / 2)))):
     return OBJ(transformantion.point(self.vertices), self.faces)