Selaa lähdekoodia

wave file working

Ghastrod 1 vuosi sitten
vanhempi
commit
213a69f887
3 muutettua tiedostoa jossa 42 lisäystä ja 1 poistoa
  1. 1 1
      src/lib.rs
  2. 1 0
      src/main.rs
  3. 40 0
      src/wave.rs

+ 1 - 1
src/lib.rs

@@ -295,7 +295,7 @@ impl<'a> State<'a> {
             multiview: None,
         });
 
-        let (vertices, indices) = creer_plan_subdivise(1.0, 1.0, 3);
+        let (vertices, indices) = creer_plan_subdivise(1.0, 1.0, 10);
         // Create a buffer with the vertex data
         let vertex_buffer = device.create_buffer_init(
             &wgpu::util::BufferInitDescriptor{

+ 1 - 0
src/main.rs

@@ -1,5 +1,6 @@
 use wgpu1::run;
 
+mod wave;
 fn main() {
     pollster::block_on(run());
 }

+ 40 - 0
src/wave.rs

@@ -0,0 +1,40 @@
+use std::f64::consts::PI;
+
+const ALPHA : f64 = 8.1e-3;
+
+const BETA : f64 = 0.74;
+
+//Wind Speed at 19 m above sea level
+const U19_5 : f64 = 19.5;
+
+const G : f64 = 9.81;
+
+const OMEGA_0 : f64 = G / U19_5;
+
+
+fn model_wiki_waves(f:f64)->f64{
+    let omega = 2.0 * PI * f;
+    let a : f64 = ALPHA * G.powi(2) / omega.powi(5);
+    let b = (-1. * BETA*(omega/OMEGA_0).powi(4)).exp();
+
+    return a * b;
+}
+
+const LAMBDA: f64 = 0.1;
+
+const K : f64 = 2.0 * PI / LAMBDA;
+
+
+fn X_wave(a:f64,b:f64,t:f64)->f64{
+    let C : f64 = (G / K).sqrt();
+    let result = a + (((K*b).exp()) / K) * (K*(a+C*t)).sin();
+
+    return result
+}
+
+fn Y_wave(a:f64,b:f64,t:f64)->f64{
+    let C : f64 = (G / K).sqrt();
+    let result = b - (((K*b).exp()) / K) * (K*(a+C*t)).cos();
+
+    return result
+}