1
0
Fork 0
flutter_demo_energy/lib/algorithms/energy.dart

30 lines
1.0 KiB
Dart

/// free fall acceleration in m/s²
const double _g = 9.81;
///
/// Potential Energy = [mass] * [height] * g
/// with [mass] in kg, [height] in m and result in m²kg/s² = Joule
double potential(double mass, double height) {
return mass * height * _g;
}
double freedPotential(double mass, double hStart, double hEnd) {
return potential(mass, hStart) - potential(mass, hEnd);
}
///
/// Kinetic energy = 0.5 [mass] * [velocity] * [velocity]
/// with [mass] in kg and velocity in m/s and result in m²kg/s² = Joule
double kinetic(double mass, double velocity) {
return mass * velocity * velocity / 2;
}
double freedKinetic(double mass, double vStart, double vEnd) {
return kinetic(mass, vStart) - kinetic(mass, vEnd);
}
///
/// Amount of freed energy when an object changes its height from [hStart] m to [hEnd] m
/// and changes its velocity from [vStart] m/s² to [vEnd] m/s².
double freedEnergy(double mass, double hStart, double hEnd, double vStart, double vEnd) {
return freedPotential(mass, hStart, hEnd) + freedKinetic(mass, vStart, vEnd);
}