// Copyright 2026 MoonBit DSP Authors
// Apache-2.0 License

///|
fn main {
  println("=== MoonBit DSP: 2D Target Kalman Tracker Demo ===")

  let dt = 0.1
  let tracker = @adaptive.KalmanFilter2D::new(dt, 0.01, 0.2)

  for step = 0; step < 15; step = step + 1 {
    let true_pos = 5.0 * step.to_double() * dt
    let noise = if step % 2 == 0 { 0.3 } else { -0.3 }
    let z = true_pos + noise
    let (p_est, v_est) = tracker.update(z)

    println(
      "Step \{step}: true=\{true_pos}, z=\{z}, pos_est=\{p_est}, vel_est=\{v_est}",
    )
  }
}