use crate::config::Float;

/// Trait untuk perhitungan Kinematika dasar.
pub trait Kinematics {
    /// Fungsi yang wajib diimplementasikan untuk mengambil nilai Panjang (Meter)
    fn get_length(&self) -> Float;

    /// Fungsi yang wajib diimplementasikan untuk mengambil nilai Waktu (Sekon)
    fn get_time(&self) -> Float;

    /// Perhitungan Kecepatan (Velocity).
    /// Ini sudah disediakan secara default oleh Phyrust.
    fn velocity(&self) -> Float {
        let t = self.get_time();
        if t == 0.0 {
            0.0 // Mencegah pembagian dengan nol
        } else {
            self.get_length() / t
        }
    }
}
