Exemple #1
0
def test_strafe_solve_speedxi_zero_x():
    K = motion.strafe_K(30, 0.001, 320, 10)
    with raises(ValueError):
        motion.strafe_solve_speedxi(0, K, 0, 1, 800)
    with raises(ValueError):
        motion.strafe_solve_speedxi(40, K, 0, 2, 800)
    assert motion.strafe_solve_speedxi(40, K, 0, 1, 800) == approx(0)
Exemple #2
0
def test_strafe_solve_speedxi_pos_z():
    K = motion.strafe_K(30, 0.001, 320, 10)
    assert motion.strafe_solve_speedxi(1000, K, 100, 400, 800) == approx(0)
    with raises(ValueError):
        motion.strafe_solve_speedxi(1000, K, 100, 700, 800)
    with raises(ValueError):
        motion.strafe_solve_speedxi(0, K, 100, 700, 800)
Exemple #3
0
def test_strafe_solve_speedxi_curve_shape():
    K = motion.strafe_K(30, 0.001, 320, 10)
    xs = range(1, 10000, 500)
    zs = range(1, 601, 100)
    for x, z in itertools.product(xs, zs):
        vix = motion.strafe_solve_speedxi(1000, K, x, z, 800)
        tx = motion.strafe_time(x, vix, K)
        tz = motion.gravity_time_speediz_z(1000, z, 800)
        if not math.isclose(tx, tz[0], abs_tol=1e-6):
            assert tx <= tz[0]
Exemple #4
0
def test_strafe_solve_speedxi_neg_z():
    K = motion.strafe_K(30, 0.001, 320, 10)
    assert motion.strafe_solve_speedxi(0, K, 100, -18,
                                       800) == approx(450.6474498822009)
    assert motion.strafe_solve_speedxi(0, K, 100, -100, 800) == approx(0)
    assert motion.strafe_solve_speedxi(163.23541222592047, K, 100, -18,
                                       800) == approx(0)
    assert motion.strafe_solve_speedxi(200, K, 100, -18, 800) == approx(0)
    assert motion.strafe_solve_speedxi(0, K, 100, -1e-3,
                                       800) == approx(63245.55095141193)
    assert motion.strafe_solve_speedxi(-10000, K, 100, -100,
                                       800) == approx(10003.952996977921)
    assert motion.strafe_solve_speedxi(-100, K, 200, -200,
                                       800) == approx(248.98914739139963)
Exemple #5
0
def test_strafe_solve_speedxi_impossible():
    K = motion.strafe_K(30, 0.001, 320, 10)
    assert math.isnan(motion.strafe_solve_speedxi(-100, K, 0, 2, 800))
    assert math.isnan(motion.strafe_solve_speedxi(-100, K, 10, 2, 800))
    with raises(ValueError):
        motion.strafe_solve_speedxi(0, K, 10, 2, 800)
Exemple #6
0
def test_strafe_solve_speedxi_zero_z():
    K = motion.strafe_K(30, 0.001, 320, 10)
    assert motion.strafe_solve_speedxi(1000, K, 1, 0, 800) == math.inf
    assert motion.strafe_solve_speedxi(0, K, 0, 0, 800) == approx(0)
    assert motion.strafe_solve_speedxi(0, K, 100, 0, 800) == math.inf
    assert motion.strafe_solve_speedxi(0, K, 1e-5, 0, 800) == math.inf
Exemple #7
0
def test_strafe_solve_speedxi():
    K = motion.strafe_K(30, 0.001, 320, 10)
    with raises(ValueError):
        motion.strafe_solve_speedxi(10, -K, 400, -200, 800)