Professional Documents
Culture Documents
En - Chapter 3 - Application
En - Chapter 3 - Application
En - Chapter 3 - Application
earth_radius = 6.37e6<m> field_size = earth_radius*60.0 max_velocity = 2.3e4<m/s> earth_mass = 5.97e24<kg> moon_mass = 7.35e22<kg>
List-comprehension syntax
Brackets Loop Yield
= { X = x; Y = y } = { X = vx; Y = vy } m "a"
let simulation_step (asteroids:Asteroid list) = [ for a in asteroids do let forces = [ for a' in asteroids do if a' <> a then yield force(a,a') ] let F = List.sum forces let p',v' = clamp(a.Position,a.Velocity) yield { a with Position = p'+dt*v' Velocity = v'+dt*F/a.Mass } ]
let simulation_step (asteroids:Asteroid list) = [ for a in asteroids do let forces = [ for a' in asteroids do if a' <> a then yield force(a,a') ] let F = List.sum forces let p',v' = clamp(a.Position,a.Velocity) yield { a with Position = p'+dt*v' Velocity = v'+dt*F/a.Mass } ]
let simulation_step (asteroids:Asteroid list) = [ for a in asteroids do let forces = [ for a' in asteroids do if a' <> a then yield force(a,a') ] let F = List.sum forces let p',v' = clamp(a.Position,a.Velocity) yield { a with Position = p'+dt*v' Velocity = v'+dt*F/a.Mass } ]
let simulation_step (asteroids:Asteroid list) = [ for a in asteroids do let forces = [ for a' in asteroids do if a' <> a then yield force(a,a') ] let F = List.sum forces let p',v' = clamp(a.Position,a.Velocity) yield { a with Position = p'+dt*v' Velocity = v'+dt*F/a.Mass } ]