update the 2 new nature functions using DVec3 instead of Vec3
This commit is contained in:
parent
169b9ee257
commit
1614ece72a
|
@ -11,7 +11,6 @@
|
|||
// This module manages the messy, impure parts of our universe.
|
||||
|
||||
use crate::prelude::*;
|
||||
use bevy::prelude::Vec3;
|
||||
|
||||
pub const OXYGEN_USE_KG_PER_S: f32 = 1e-5;
|
||||
pub const OXY_S: f32 = OXYGEN_USE_KG_PER_S;
|
||||
|
@ -172,30 +171,30 @@ pub fn simple_orbital_period(mass: f64, distance: f64) -> f64 {
|
|||
}
|
||||
|
||||
/// Calculates the orbital velocity with given parameters, assuming prograde circular orbit.
|
||||
pub fn orbital_velocity(coords: Vec3, mass: f64) -> Vec3 {
|
||||
let r = coords.length() as f64;
|
||||
let speed = (G * mass / r).sqrt() as f32;
|
||||
pub fn orbital_velocity(coords: DVec3, mass: f64) -> DVec3 {
|
||||
let r = coords.length();
|
||||
let speed = (G * mass / r).sqrt();
|
||||
|
||||
// This generates a perpendicular orbital vector in the prograde direction
|
||||
let perpendicular = Vec3::new(-coords.z, 0.0, -coords.x).normalize();
|
||||
let perpendicular = DVec3::new(-coords.z, 0.0, -coords.x).normalize();
|
||||
|
||||
return perpendicular * speed;
|
||||
}
|
||||
|
||||
/// Calculates the acceleration towards a mass in m/s
|
||||
pub fn gravitational_acceleration(coords: Vec3, mass: f64) -> Vec3 {
|
||||
let r_squared = coords.length_squared() as f64;
|
||||
pub fn gravitational_acceleration(coords: DVec3, mass: f64) -> DVec3 {
|
||||
let r_squared = coords.length_squared();
|
||||
let acceleration_magnitude = G * mass / r_squared;
|
||||
return -acceleration_magnitude as f32 * (coords / r_squared.sqrt() as f32);
|
||||
return -acceleration_magnitude * (coords / r_squared.sqrt());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_gravitational_acceleration() {
|
||||
let coords = Vec3::new(EARTH_RADIUS as f32, 0.0, 0.0);
|
||||
let coords = DVec3::new(EARTH_RADIUS, 0.0, 0.0);
|
||||
let mass = EARTH_MASS;
|
||||
let g = gravitational_acceleration(coords, mass);
|
||||
let g_rounded = (g * 10.0).round() / 10.0;
|
||||
assert_eq!(g_rounded, Vec3::new(-9.8, 0.0, 0.0));
|
||||
assert_eq!(g_rounded, DVec3::new(-9.8, 0.0, 0.0));
|
||||
}
|
||||
|
||||
pub fn phase_dist_to_coords(phase_radians: f64, distance: f64) -> DVec3 {
|
||||
|
|
Loading…
Reference in a new issue