コード例 #1
0
def test_imul():
    for ms in np.random.uniform(-720, 720, (1000, 4)):
        m = Mat2(ms)
        if abs(m.det()) < 1e-6:
            continue
        assert m * m._1 == Mat2.eye()
        m *= m._1
        assert m == Mat2.eye()
コード例 #2
0
def test_idiv():
    for ms in np.random.uniform(-720, 720, (1000, 8)):
        m1 = Mat2(ms[:4])
        m2 = Mat2(ms[4:])
        m12 = m1 / m2
        m1 /= m2
        assert m12 == m1
        assert m1 == (ms[:4] / ms[4:]).reshape(2, 2)
コード例 #3
0
def test_sub1():
    for ms in np.random.uniform(-720, 720, (1000, 5)):
        m = Mat2(ms[:-1])
        m1 = m - ms[-1]
        m1i = (ms[:-1] - ms[-1]).reshape(2, 2)
        assert m1 == m1i
        assert ms[-1] - m == -(ms[:-1] - ms[-1]).reshape(2, 2)
コード例 #4
0
def test_constructor7():
    m = Mat2.eye()
    assert m is not None
    assert m.m11 == approx(1)
    assert m.m12 == approx(0)
    assert m.m21 == approx(0)
    assert m.m22 == approx(1)
コード例 #5
0
def test_constructor9():
    m = Mat2.from_xaxis((1, 1))
    assert m is not None
    assert m.m11 == approx(1 / 2**0.5)
    assert m.m12 == approx(1 / 2**0.5)
    assert m.m21 == approx(-1 / 2**0.5)
    assert m.m22 == approx(1 / 2**0.5)
コード例 #6
0
def test_constructor1():
    m = Mat2(1, 2, 3, 4)
    assert m is not None
    assert m.m11 == approx(1)
    assert m.m12 == approx(2)
    assert m.m21 == approx(3)
    assert m.m22 == approx(4)
コード例 #7
0
def test_constructor6():
    m = Mat2([Vec2(1, 2), Vec2(3, 4)])
    assert m is not None
    assert m.m11 == approx(1)
    assert m.m12 == approx(2)
    assert m.m21 == approx(3)
    assert m.m22 == approx(4)
コード例 #8
0
ファイル: test_geometry.py プロジェクト: TovarnovM/easyvec
def test_polyline_get_Iz():
    pl = PolyLine([(0, 3), (10, 3), (10, 0), (0, 0)], copy_data=True)
    for angle in np.random.uniform(-180, 180, 1000):
        pl1 = pl.add_vec(Vec2(10, 20))
        plt = pl1.transform(Mat2.from_angle(angle, True))
        cm = plt.get_center_mass()
        assert plt.get_Iz(cm) == approx((10**2 + 3**2) / 12)
コード例 #9
0
def test_constructor4():
    m = Mat2([1, 2], [3, 4])
    assert m is not None
    assert m.m11 == approx(1)
    assert m.m12 == approx(2)
    assert m.m21 == approx(3)
    assert m.m22 == approx(4)
コード例 #10
0
def test_add1():
    for ms in np.random.uniform(-720, 720, (1000, 5)):
        m = Mat2(ms[:-1])
        m1 = m + ms[-1]
        m1i = (ms[:-1] + ms[-1]).reshape(2, 2)
        assert m1 == m1i
        assert ms[-1] + m == (ms[:-1] + ms[-1]).reshape(2, 2)
コード例 #11
0
def test_constructor8():
    from math import sin, cos, pi
    for angle in np.random.uniform(-720, 720, 1000):
        angle *= pi / 180
        m = Mat2.from_angle(angle)
        assert m is not None
        assert m.m11 == approx(cos(angle))
        assert m.m12 == approx(sin(angle))
        assert m.m21 == approx(-sin(angle))
        assert m.m22 == approx(cos(angle))
コード例 #12
0
def test_mul2():
    for angle, x, y in np.random.uniform(-180, 180, (1000, 3)):
        m = Mat2.from_angle(angle, 1)
        v = Vec2(x, y).norm()
        v1 = m * v
        assert v.angle_to(v1, 1) == approx(-angle)
        v2 = m._1 * v1
        assert v2 == v
        v3 = m._1 * v
        assert v.angle_to(v3, 1) == approx(angle)
コード例 #13
0
def test_T():
    m = Mat2(-1, 2, -3, 4)
    assert m.T == [[-1, -3], [2, 4]]
コード例 #14
0
ファイル: unit.py プロジェクト: Kr1eg3/neuro_tank
 def set_alpha(self, alpha):
     self.alpha = alpha
     self.M_rot = Mat2.from_angle(alpha, degrees=True)
     self.M_rot_1 = self.M_rot._1
コード例 #15
0
def test_xiyj_axis():
    m = Mat2(1, 2, 3, 4)
    assert m.x_axis() == (1, 2)
    assert m.i_axis() == (1, 2)
    assert m.y_axis() == (3, 4)
    assert m.j_axis() == (3, 4)
コード例 #16
0
def test_add2():
    for ms in np.random.uniform(-720, 720, (1000, 8)):
        m1 = Mat2(ms[:4])
        m2 = Mat2(ms[4:])
        assert m1 + m2 == m2 + m1
        assert m1 + m2 == (ms[:4] + ms[4:]).reshape(2, 2)
コード例 #17
0
def test_inverse1():
    for angle in np.random.uniform(-720, 720, 1000):
        m = Mat2.from_angle(angle)
        assert m._1 == m.T
        assert m.det() == approx(1)
コード例 #18
0
def test_mul1():
    for ms in np.random.uniform(-720, 720, (1000, 5)):
        m = Mat2(ms[:-1])
        assert m * ms[-1] == (ms[:-1] * ms[-1]).reshape(2, 2)
        assert ms[-1] * m == (ms[:-1] * ms[-1]).reshape(2, 2)
コード例 #19
0
def test_sub2():
    for ms in np.random.uniform(-720, 720, (1000, 8)):
        m1 = Mat2(ms[:4])
        m2 = Mat2(ms[4:])
        assert m1 - m2 == -(m2 - m1)
        assert m1 - m2 == (ms[:4] - ms[4:]).reshape(2, 2)
コード例 #20
0
def test_div1():
    for ms in np.random.uniform(-720, 720, (1000, 5)):
        m = Mat2(ms[:-1])
        m1 = m / ms[-1]
        m1i = (ms[:-1] / ms[-1]).reshape(2, 2)
        assert m1 == m1i
コード例 #21
0
def test_cmp():
    m = Mat2(-1, 2, -3, 4)
    assert m == [[-1, 2], [-3, 4]]
    assert m != [[-1, -2], [-3, 4]]
コード例 #22
0
def test_div2():
    for ms in np.random.uniform(-720, 720, (1000, 8)):
        m1 = Mat2(ms[:4])
        m2 = Mat2(ms[4:])
        assert m1 / m2 == (ms[:4] / ms[4:]).reshape(2, 2)
コード例 #23
0
ファイル: test_geometry.py プロジェクト: TovarnovM/easyvec
def test_polyline_area4():
    pl = PolyLine([(1, 2), (11, 2), (10, 0), (0, 0)], copy_data=True)
    for angle in np.random.uniform(-180, 180, 1000):
        pl1 = pl.add_vec(Vec2(10, 20))
        plt = pl1.transform(Mat2.from_angle(angle, True))
        assert plt.get_area() == approx(20)
コード例 #24
0
ファイル: unit.py プロジェクト: Kr1eg3/neuro_tank
                return res
        return {}

    def shoot(self):
        if not self.can_shoot:
            return None
        angle = np.random.normal(self.alpha, self.theta / 3)
        vel = Vec2(self.round_vel, 0).rotate(angle, degrees=True)
        self.time_last_shot = self.time
        v = 3 * vel.norm() + self.pos
        return Round(v, vel, self.dmg)


class Round(object):
    id_counter = 0

    def __init__(self, pos, vel, dmg):
        self.pos = _convert(pos).copy()
        self.vel = _convert(vel).copy()
        self.dmg = dmg
        self.id = Round.id_counter
        Round.id_counter += 1

    def get_move_segment(self, dt: float):
        return (self.pos.copy(), self.pos + dt * self.vel)


if __name__ == "__main__":
    m = Mat2.from_angle(90, True)
    print(m._1 * Vec2(1, 0))