Line data Source code
1 : import 'dart:core';
2 :
3 : class Speed implements Comparable<Speed> {
4 : ///meters per second to:
5 : static const double _msec_to_kmh = 3.6;
6 : static const double _msec_to_mih = 2.23693629;
7 : static const double _msec_to_knot = 1.94384449;
8 :
9 : ///other measurements to meters per second
10 : static const double _kmh_to_msec = 0.27777777777778;
11 : static const double _mih_to_msec = 0.44704;
12 : static const double _knot_to_msec = 0.514444444;
13 :
14 : /*
15 : * The value of this Speed object in m/s = meter per second .
16 : */
17 : final double _speed;
18 :
19 1 : const Speed.fromMeterPerSecond({double value : 0.0}) : _speed = value;
20 2 : const Speed.fromKilometerPerHour({double value : 0.0}) : _speed = _kmh_to_msec * value;
21 0 : const Speed.fromMilePerHour({double value: 0.0}) : _speed = _mih_to_msec * value;
22 0 : const Speed.fromKnot({double value: 0.0}) : _speed = _knot_to_msec * value;
23 :
24 2 : double get inMeterPerSecond => _returnValueOrZero(_speed);
25 0 : double get inKilometerPerHour => _returnValueOrZero(_msec_to_kmh * _speed);
26 0 : double get inMilePerHour => _returnValueOrZero(_msec_to_mih * _speed);
27 0 : double get inKnot => _returnValueOrZero(_msec_to_knot * _speed);
28 :
29 3 : double _returnValueOrZero(double value) => value >= 0.0 ? double.parse(value.toStringAsFixed(6)) : 0.0;
30 :
31 : /**
32 : * Compares this Speed to [other], returning zero if the values are equal.
33 : *
34 : * Returns a negative integer if this `Speed` is shorter than
35 : * [other], or a positive integer if it is longer.
36 : *
37 : * A negative `Speed` is always considered shorter than a positive one.
38 : *
39 : */
40 0 : int compareTo(Speed other) => _speed.compareTo(other._speed);
41 : }
|