65 lines
1.7 KiB
V
65 lines
1.7 KiB
V
|
module sim
|
||
|
|
||
|
const (
|
||
|
sim_test_mock_params = SimParams{
|
||
|
rope_length: 0.25
|
||
|
bearing_mass: 0.03
|
||
|
magnet_spacing: 0.05
|
||
|
magnet_height: 0.03
|
||
|
magnet_strength: 10
|
||
|
gravity: 4.9
|
||
|
}
|
||
|
sim_test_mock_state = SimState{
|
||
|
position: vector(
|
||
|
x: -0.016957230930171364
|
||
|
y: -0.02937078552673521
|
||
|
z: 0.002311063475327252
|
||
|
)
|
||
|
velocity: vector(
|
||
|
x: -7.251158929833104
|
||
|
y: -12.559375680227724
|
||
|
z: -105.91539687686381
|
||
|
)
|
||
|
accel: vector(
|
||
|
x: -8.337034766251843e-11
|
||
|
y: -2.842170943040401e-10
|
||
|
z: 1.2126596023639044e-10
|
||
|
)
|
||
|
}
|
||
|
)
|
||
|
|
||
|
pub fn test_satisfy_rope_constraint() {
|
||
|
mut state := SimState{
|
||
|
...sim.sim_test_mock_state
|
||
|
}
|
||
|
|
||
|
state.satisfy_rope_constraint(sim.sim_test_mock_params)
|
||
|
assert state.position.x == -0.016957230930171364
|
||
|
assert state.position.y == -0.02937078552673521
|
||
|
assert state.position.z == 0.002311063475327252
|
||
|
assert state.velocity.x == -7.251158929833104
|
||
|
assert state.velocity.y == -12.559375680227724
|
||
|
assert state.velocity.z == -105.91539687686381
|
||
|
assert state.accel.x == -8.337034766251843e-11
|
||
|
assert state.accel.y == -2.842170943040401e-10
|
||
|
assert state.accel.z == 1.2126596023639044e-10
|
||
|
}
|
||
|
|
||
|
pub fn test_increment() {
|
||
|
mut state := SimState{
|
||
|
...sim.sim_test_mock_state
|
||
|
}
|
||
|
|
||
|
delta_t := 0.0005
|
||
|
state.increment(delta_t, sim.sim_test_mock_params)
|
||
|
assert state.position.x == -0.016957230930171364
|
||
|
assert state.position.y == -0.02937078552673524
|
||
|
assert state.position.z == 0.0023110634753272796
|
||
|
assert state.velocity.x == -7.251158929833044
|
||
|
assert state.velocity.y == -12.559375680227637
|
||
|
assert state.velocity.z == -105.9153968768638
|
||
|
assert state.accel.x == 1.2126596023639044e-10
|
||
|
assert state.accel.y == 1.7431981783981126e-10
|
||
|
assert state.accel.z == 3.031649005909761e-11
|
||
|
}
|