🎉 Initial commit
This commit is contained in:
commit
620bd8be51
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/target
|
63
Cargo.lock
generated
Normal file
63
Cargo.lock
generated
Normal file
@ -0,0 +1,63 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "aho-corasick"
|
||||
version = "1.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "free-fall-sim"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"physical_constants",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
version = "2.7.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
|
||||
|
||||
[[package]]
|
||||
name = "physical_constants"
|
||||
version = "0.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f3aad4556f19b1f2430b7d8492f251a8d152636595bcbf3224d099eead0e4c73"
|
||||
dependencies = [
|
||||
"regex",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "1.11.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"memchr",
|
||||
"regex-automata",
|
||||
"regex-syntax",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex-automata"
|
||||
version = "0.4.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"memchr",
|
||||
"regex-syntax",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex-syntax"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
|
7
Cargo.toml
Normal file
7
Cargo.toml
Normal file
@ -0,0 +1,7 @@
|
||||
[package]
|
||||
name = "free-fall-sim"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
physical_constants = "0.5.0"
|
38
src/main.rs
Normal file
38
src/main.rs
Normal file
@ -0,0 +1,38 @@
|
||||
#![allow(non_snake_case)]
|
||||
|
||||
use physical_constants;
|
||||
use std::{thread, time};
|
||||
|
||||
fn main() {
|
||||
let f = 100_f64; // Hz
|
||||
let time_delta = 1_f64 / f; // s
|
||||
let speed_dial = 1_f64;
|
||||
let pause = time::Duration::from_millis((time_delta * 1000_f64 / speed_dial) as u64);
|
||||
|
||||
let mass = 1_f64; // kg
|
||||
//let A = 0.0025_f64; // m^2
|
||||
let A = 1_f64; // m^2
|
||||
let Cd = 0.5_f64;
|
||||
let p = 1.204_f64; // kg/m^3
|
||||
|
||||
let Fg = mass * physical_constants::STANDARD_ACCELERATION_OF_GRAVITY; // N
|
||||
let mut Fd = 0_f64;
|
||||
|
||||
let mut a; // m/s^2
|
||||
let mut v = 0_f64; // m/s
|
||||
let mut d = 0_f64; // m
|
||||
let mut elapsed = 0_f64;
|
||||
|
||||
loop {
|
||||
a = (Fg - Fd) / mass;
|
||||
v += a * time_delta;
|
||||
d += v * time_delta;
|
||||
|
||||
print!("t = {:.3} s Fg = {:.3} N Fd = {:.3} N a = {:.3} m/s^2 v = {:.3} m/s d = {:.3} m\r", elapsed, Fg, Fd, a, v, d);
|
||||
|
||||
Fd = p * Cd * A * v.powf(2_f64) / 2_f64;
|
||||
elapsed += time_delta;
|
||||
|
||||
thread::sleep(pause);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user