🎉 Initial commit

This commit is contained in:
Daniel Svitan 2025-04-18 22:15:04 +02:00
commit 620bd8be51
4 changed files with 109 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/target

63
Cargo.lock generated Normal file
View 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
View 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
View 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);
}
}