Implemented radius for Bodies and added Vector3 Rendering position
This commit is contained in:
parent
6d9bdae160
commit
2b73b0ddce
@ -12,12 +12,14 @@ pub async fn run() {
|
|||||||
position: Vector3::new(0.0, 0.0, 0.0),
|
position: Vector3::new(0.0, 0.0, 0.0),
|
||||||
velocity: Vector3::new(0.0, 0.0, 0.0),
|
velocity: Vector3::new(0.0, 0.0, 0.0),
|
||||||
mass: 1.989e30,
|
mass: 1.989e30,
|
||||||
|
radius: 6.963e8,
|
||||||
});
|
});
|
||||||
sim.add_body(Body {
|
sim.add_body(Body {
|
||||||
name: "Earth".into(),
|
name: "Earth".into(),
|
||||||
position: Vector3::new(1.496e11, 0.0, 0.0),
|
position: Vector3::new(1.496e11, 0.0, 0.0),
|
||||||
velocity: Vector3::new(0.0, 29780.0, 0.0),
|
velocity: Vector3::new(0.0, 29780.0, 0.0),
|
||||||
mass: 5.972e24,
|
mass: 5.972e24,
|
||||||
|
radius: 6.371e6,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -47,17 +49,13 @@ pub async fn run() {
|
|||||||
let sim = simulator_clone.read().unwrap();
|
let sim = simulator_clone.read().unwrap();
|
||||||
let bodies = &sim.bodies;
|
let bodies = &sim.bodies;
|
||||||
|
|
||||||
let sun_pos = Vector3::new(
|
let sun_pos = (bodies[0].position / 1.496e11);
|
||||||
(bodies[0].position[0] / 1.496e11) as f32,
|
|
||||||
(bodies[0].position[1] / 1.496e11) as f32,
|
|
||||||
0.0,
|
|
||||||
);
|
|
||||||
|
|
||||||
let light_offset = Vector3::new(0.0, 0.0, 0.1);
|
// let light_offset = Vector3::new(0.0, 0.0, 0.1);
|
||||||
|
|
||||||
state.light_manager.clear();
|
state.light_manager.clear();
|
||||||
state.light_manager.add_light(Light {
|
state.light_manager.add_light(Light {
|
||||||
position: sun_pos + light_offset,
|
position: sun_pos.cast::<f32>().unwrap(),
|
||||||
direction: Vector3::new(0.0, 0.0, 0.0),
|
direction: Vector3::new(0.0, 0.0, 0.0),
|
||||||
color: Vector3::from([1.0, 1.0, 0.8]),
|
color: Vector3::from([1.0, 1.0, 0.8]),
|
||||||
intensity: 5.0,
|
intensity: 5.0,
|
||||||
@ -72,11 +70,7 @@ pub async fn run() {
|
|||||||
.enumerate()
|
.enumerate()
|
||||||
.map(|(i, b)| {
|
.map(|(i, b)| {
|
||||||
solar_engine::RenderInstance {
|
solar_engine::RenderInstance {
|
||||||
position: Vector3::new(
|
position: ((b.position / 1.496e11) - sun_pos).cast::<f32>().unwrap(),
|
||||||
((b.position[0] / 1.496e11) as f32) - sun_pos.x,
|
|
||||||
((b.position[1] / 1.496e11) as f32) - sun_pos.y,
|
|
||||||
0.0,
|
|
||||||
),
|
|
||||||
rotation: cgmath::Quaternion::from_angle_z(cgmath::Deg(0.0)),
|
rotation: cgmath::Quaternion::from_angle_z(cgmath::Deg(0.0)),
|
||||||
color: match i {
|
color: match i {
|
||||||
0 => [1.0, 1.0, 0.0], // Sun
|
0 => [1.0, 1.0, 0.0], // Sun
|
||||||
|
|||||||
@ -6,15 +6,17 @@ pub struct Body {
|
|||||||
pub mass: f64,
|
pub mass: f64,
|
||||||
pub position: Vector3<f64>,
|
pub position: Vector3<f64>,
|
||||||
pub velocity: Vector3<f64>,
|
pub velocity: Vector3<f64>,
|
||||||
|
pub radius: f64,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Body {
|
impl Body {
|
||||||
pub fn new(name: &str, mass: f64, position: Vector3<f64>, velocity: Vector3<f64>) -> Self {
|
pub fn new(name: &str, mass: f64, position: Vector3<f64>, velocity: Vector3<f64>, radius: f64) -> Self {
|
||||||
Self {
|
Self {
|
||||||
name: name.to_string(),
|
name: name.to_string(),
|
||||||
mass,
|
mass,
|
||||||
position,
|
position,
|
||||||
velocity,
|
velocity,
|
||||||
|
radius,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user