From 36726bc8508e9958ce7d59c13ed8f90d50d10926 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Fri, 15 Jul 2016 14:35:40 +0200 Subject: [PATCH] Implemented pressure, speed and angle --- Utils/Converter/AngleType.php | 43 ++++ Utils/Converter/Measurement.php | 375 ++++++++++++++++++++++++++++++- Utils/Converter/PressureType.php | 46 ++++ Utils/Converter/SpeedType.php | 69 +++--- 4 files changed, 494 insertions(+), 39 deletions(-) diff --git a/Utils/Converter/AngleType.php b/Utils/Converter/AngleType.php index e69de29bb..75b5e508e 100644 --- a/Utils/Converter/AngleType.php +++ b/Utils/Converter/AngleType.php @@ -0,0 +1,43 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace phpOMS\Utils\Converter; + +use phpOMS\Datatypes\Enum; + +/** + * Speed type enum. + * + * @category Framework + * @package phpOMS\Utils\Converter + * @author OMS Development Team + * @author Dennis Eichhorn + * @license OMS License 1.0 + * @link http://orange-management.com + * @since 1.0.0 + */ +abstract class AngleType extends Enum +{ + const DEGREE = 'ยบ'; + const RADIAN = 'rad'; + const SECOND = 'arcsec'; + const MINUTE = 'arcmin'; + const MILLIRADIAN_US = 'mil (us ww2)'; + const MILLIRADIAN_UK = 'mil (uk)'; + const MILLIRADIAN_USSR = 'mil (ussr)'; + const MILLIRADIAN_NATO = 'mil (nato)'; + const GRADIAN = 'g'; + const CENTRAD = 'crad'; +} diff --git a/Utils/Converter/Measurement.php b/Utils/Converter/Measurement.php index 27691f25e..b851ad0f4 100644 --- a/Utils/Converter/Measurement.php +++ b/Utils/Converter/Measurement.php @@ -739,8 +739,221 @@ class Measurement * @since 1.0.0 * @author Dennis Eichhorn */ - public static function convertSpeed(float $value, string $from = WeightType::GRAM, string $to = WeightType::KILOGRAM) : float + public static function convertSpeed(float $value, string $from = SpeedType::KILOMETERS_PER_HOUR, string $to = SpeedType::KILOMETERS_PER_HOUR) : float { + // to kph + switch ($from) { + case SpeedType::KILOMETERS_PER_HOUR: + break; + case SpeedType::MILES_PER_DAY: + $value = $value / 24 * 1.60934; + break; + case SpeedType::MILES_PER_HOUR: + $value *= 1.60934; + break; + case SpeedType::MILES_PER_MINUTE: + $value *= 60 * 1.60934; + break; + case SpeedType::MILES_PER_SECOND: + $value *= 60 * 60 * 1.60934; + break; + case SpeedType::KILOMETERS_PER_DAY: + $value /= 24; + break; + case SpeedType::KILOMETERS_PER_MINUTE: + $value *= 60; + break; + case SpeedType::KILOMETERS_PER_SECOND: + $value *= 60 * 60; + break; + case SpeedType::METERS_PER_DAY: + $value = $value / 24 / 1000; + break; + case SpeedType::METERS_PER_HOUR: + $value /= 1000; + break; + case SpeedType::METERS_PER_MINUTE: + $value *= 60 / 1000; + break; + case SpeedType::METERS_PER_SECOND: + $value *= 60 * 60 / 1000; + break; + case SpeedType::CENTIMETERS_PER_DAY: + $value = $value / 24 / 100000; + break; + case SpeedType::CENTIMETERS_PER_HOUR: + $value /= 100000; + break; + case SpeedType::CENTIMETERS_PER_MINUTES: + $value *= 60 / 100000; + break; + case SpeedType::CENTIMETERS_PER_SECOND: + $value *= 60 * 60 / 100000; + break; + case SpeedType::MILLIMETERS_PER_DAY: + $value = $value / 24 / 1000000; + break; + case SpeedType::MILLIMETERS_PER_HOUR: + $value /= 1000000; + break; + case SpeedType::MILLIMETERS_PER_MINUTES: + $value *= 60 / 1000000; + break; + case SpeedType::MILLIMETERS_PER_SECOND: + $value *= 60 * 60 / 1000000; + break; + case SpeedType::YARDS_PER_DAY: + $value = $value / 24 * 0.0009144; + break; + case SpeedType::YARDS_PER_HOUR: + $value *= 0.0009144; + break; + case SpeedType::YARDS_PER_MINUTE: + $value *= 60 * 0.0009144; + break; + case SpeedType::YARDS_PER_SECOND: + $value *= 60 * 60 * 0.0009144; + break; + case SpeedType::INCHES_PER_DAY: + $value = $value / 24 * 0.0000254; + break; + case SpeedType::INCHES_PER_HOUR: + $value *= 0.0000254; + break; + case SpeedType::INCHES_PER_MINUTE: + $value *= 60 * 0.0000254; + break; + case SpeedType::INCHES_PER_SECOND: + $value *= 60 * 60 * 0.0000254; + break; + case SpeedType::FEET_PER_DAY: + $value = $value / 24 * 0.0003048; + break; + case SpeedType::FEET_PER_HOUR: + $value *= 0.0003048; + break; + case SpeedType::FEET_PER_MINUTE: + $value *= 60 * 0.0003048; + break; + case SpeedType::FEET_PER_SECOND: + $value *= 60 * 60 * 0.0003048; + break; + case SpeedType::MACH: + $value *= 1225.044; + break; + case SpeedType::KNOTS: + $value *= 1.852; + break; + default: + throw new \InvalidArgumentException('Speed not supported'); + } + + switch ($to) { + case SpeedType::KILOMETERS_PER_HOUR: + break; + case SpeedType::MILES_PER_DAY: + $value = $value * 24 / 1.60934; + break; + case SpeedType::MILES_PER_HOUR: + $value /= 1.60934; + break; + case SpeedType::MILES_PER_MINUTE: + $value = $value / 60 / 1.60934; + break; + case SpeedType::MILES_PER_SECOND: + $value = $value / 3600 / 1.60934; + break; + case SpeedType::KILOMETERS_PER_DAY: + $value *= 24; + break; + case SpeedType::KILOMETERS_PER_MINUTE: + $value /= 60; + break; + case SpeedType::KILOMETERS_PER_SECOND: + $value /= 3600; + break; + case SpeedType::METERS_PER_DAY: + $value = $value * 24 * 1000; + break; + case SpeedType::METERS_PER_HOUR: + $value *= 1000; + break; + case SpeedType::METERS_PER_MINUTE: + $value = $value / 60 * 1000; + break; + case SpeedType::METERS_PER_SECOND: + $value = $value / 3600 * 1000; + break; + case SpeedType::CENTIMETERS_PER_DAY: + $value = $value * 24 * 100000; + break; + case SpeedType::CENTIMETERS_PER_HOUR: + $value *= 100000; + break; + case SpeedType::CENTIMETERS_PER_MINUTES: + $value = $value / 60 * 100000; + break; + case SpeedType::CENTIMETERS_PER_SECOND: + $value = $value / 3600 * 100000; + break; + case SpeedType::MILLIMETERS_PER_DAY: + $value = $value * 24 * 1000000; + break; + case SpeedType::MILLIMETERS_PER_HOUR: + $value *= 1000000; + break; + case SpeedType::MILLIMETERS_PER_MINUTES: + $value = $value / 60 * 1000000; + break; + case SpeedType::MILLIMETERS_PER_SECOND: + $value = $value / 3600 * 1000000; + break; + case SpeedType::YARDS_PER_DAY: + $value = $value * 24 / 0.0009144; + break; + case SpeedType::YARDS_PER_HOUR: + $value /= 0.0009144; + break; + case SpeedType::YARDS_PER_MINUTE: + $value = $value / 60 / 0.0009144; + break; + case SpeedType::YARDS_PER_SECOND: + $value = $value / 3600 / 0.0009144; + break; + case SpeedType::INCHES_PER_DAY: + $value = $value * 24 / 0.0000254; + break; + case SpeedType::INCHES_PER_HOUR: + $value /= 0.0000254; + break; + case SpeedType::INCHES_PER_MINUTE: + $value = $value / 60 / 0.0000254; + break; + case SpeedType::INCHES_PER_SECOND: + $value = $value / 3600 / 0.0000254; + break; + case SpeedType::FEET_PER_DAY: + $value = $value * 24 / 0.0003048; + break; + case SpeedType::FEET_PER_HOUR: + $value /= 0.0003048; + break; + case SpeedType::FEET_PER_MINUTE: + $value = $value / 60 / 0.0003048; + break; + case SpeedType::FEET_PER_SECOND: + $value = $value / 3600 / 0.0003048; + break; + case SpeedType::MACH: + $value /= 1225.044; + break; + case SpeedType::KNOTS: + $value /= 1.852; + break; + default: + throw new \InvalidArgumentException('Speed not supported'); + } + return $value; } @@ -758,7 +971,7 @@ class Measurement */ public static function convertTime(float $value, string $from = TimeType::SECONDS, string $to = TimeType::HOURS) : float { - // to byte + // to seconds switch ($from) { case TimeType::SECONDS: break; @@ -836,8 +1049,77 @@ class Measurement * @since 1.0.0 * @author Dennis Eichhorn */ - public static function convertAngle(float $value, string $from = WeightType::GRAM, string $to = WeightType::KILOGRAM) : float + public static function convertAngle(float $value, string $from = AngleType::DEGREE, string $to = AngleType::DEGREE) : float { + // to degree + switch ($from) { + case AngleType::DEGREE: + break; + case AngleType::RADIAN: + $value *= 57.296; + break; + case AngleType::SECOND: + $value *= 0.00027778; + break; + case AngleType::MINUTE: + $value *= 0.016667; + break; + case AngleType::MILLIRADIAN_US: + $value *= 0.09; + break; + case AngleType::MILLIRADIAN_UK: + $value *= 0.057296; + break; + case AngleType::MILLIRADIAN_USSR: + $value *= 0.057143; + break; + case AngleType::MILLIRADIAN_NATO: + $value *= 0.056250; + break; + case AngleType::GRADIAN: + $value *= 0.09; + break; + case AngleType::CENTRAD: + $value *= 0.57296; + break; + default: + throw new \InvalidArgumentException('Angle not supported'); + } + + switch ($to) { + case AngleType::DEGREE: + break; + case AngleType::RADIAN: + $value /= 57.296; + break; + case AngleType::SECOND: + $value /= 0.00027778; + break; + case AngleType::MINUTE: + $value /= 0.016667; + break; + case AngleType::MILLIRADIAN_US: + $value /= 0.09; + break; + case AngleType::MILLIRADIAN_UK: + $value /= 0.057296; + break; + case AngleType::MILLIRADIAN_USSR: + $value /= 0.057143; + break; + case AngleType::MILLIRADIAN_NATO: + $value /= 0.056250; + break; + case AngleType::GRADIAN: + $value /= 0.09; + break; + case AngleType::CENTRAD: + $value /= 0.57296; + break; + default: + throw new \InvalidArgumentException('Angle not supported'); + } + return $value; } @@ -853,8 +1135,93 @@ class Measurement * @since 1.0.0 * @author Dennis Eichhorn */ - public static function convertPressure(float $value, string $from = WeightType::GRAM, string $to = WeightType::KILOGRAM) : float + public static function convertPressure(float $value, string $from = PressureType::PASCALS, string $to = PressureType::BAR) : float { + // to pascals + switch ($from) { + case PressureType::PASCALS: + break; + case PressureType::BAR: + $value *= 100000; + break; + case PressureType::POUND_PER_SQUARE_INCH: + $value /= 0.00014504; + break; + case PressureType::ATMOSPHERES: + $value *= 101325; + break; + case PressureType::INCHES_OF_MERCURY: + $value /= 0.00029530; + break; + case PressureType::INCHES_OF_WATER: + $value /= 0.0040146; + break; + case PressureType::MILLIMETERS_OF_WATER: + $value /= 0.10197; + break; + case PressureType::MILLIMETERS_OF_MERCURY: + $value /= 0.0075006; + break; + case PressureType::MILLIBAR: + $value *= 100; + break; + case PressureType::KILOGRAM_PER_SQUARE_METER: + $value /= 0.10197; + break; + case PressureType::NEWTONS_PER_METER_SQUARED: + break; + case PressureType::POUNDS_PER_SQUARE_FOOT: + $value /= 0.020885; + break; + case PressureType::TORRS: + $value /= 0.0075006; + break; + default: + throw new \InvalidArgumentException('Size not supported'); + } + + switch ($to) { + case PressureType::PASCALS: + break; + case PressureType::BAR: + $value /= 100000; + break; + case PressureType::POUND_PER_SQUARE_INCH: + $value *= 0.00014504; + break; + case PressureType::ATMOSPHERES: + $value /= 101325; + break; + case PressureType::INCHES_OF_MERCURY: + $value *= 0.00029530; + break; + case PressureType::INCHES_OF_WATER: + $value *= 0.0040146; + break; + case PressureType::MILLIMETERS_OF_WATER: + $value *= 0.10197; + break; + case PressureType::MILLIMETERS_OF_MERCURY: + $value *= 0.0075006; + break; + case PressureType::MILLIBAR: + $value /= 100; + break; + case PressureType::KILOGRAM_PER_SQUARE_METER: + $value *= 0.10197; + break; + case PressureType::NEWTONS_PER_METER_SQUARED: + break; + case PressureType::POUNDS_PER_SQUARE_FOOT: + $value *= 0.020885; + break; + case PressureType::TORRS: + $value *= 0.0075006; + break; + default: + throw new \InvalidArgumentException('Size not supported'); + } + return $value; } diff --git a/Utils/Converter/PressureType.php b/Utils/Converter/PressureType.php index e69de29bb..b464bbb60 100644 --- a/Utils/Converter/PressureType.php +++ b/Utils/Converter/PressureType.php @@ -0,0 +1,46 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace phpOMS\Utils\Converter; + +use phpOMS\Datatypes\Enum; + +/** + * Speed type enum. + * + * @category Framework + * @package phpOMS\Utils\Converter + * @author OMS Development Team + * @author Dennis Eichhorn + * @license OMS License 1.0 + * @link http://orange-management.com + * @since 1.0.0 + */ +abstract class PressureType extends Enum +{ + const PASCALS = 'Pa'; + const BAR = 'bar'; + const POUND_PER_SQUARE_INCH = 'psi'; + const ATMOSPHERES = 'atm'; + const INCHES_OF_MERCURY = 'inHg'; + const INCHES_OF_WATER = 'inH20'; + const MILLIMETERS_OF_WATER = 'mmH2O'; + const MILLIMETERS_OF_MERCURY = 'mmHg'; + const MILLIBAR = 'mbar'; + const KILOGRAM_PER_SQUARE_METER = 'kg/m2'; + const NEWTONS_PER_METER_SQUARED = 'N/m2'; + const POUNDS_PER_SQUARE_FOOT = 'psf'; + const TORRS = 'Torr'; +} diff --git a/Utils/Converter/SpeedType.php b/Utils/Converter/SpeedType.php index 64535fcd9..a64d49f60 100644 --- a/Utils/Converter/SpeedType.php +++ b/Utils/Converter/SpeedType.php @@ -30,39 +30,38 @@ use phpOMS\Datatypes\Enum; */ abstract class SpeedType extends Enum { - const MILES_PER_DAY = 'ft'; - const MILES_PER_HOUR = 'ft'; - const MILES_PER_MINUTE = 'ft'; - const MILES_PER_SECOND = 'ft'; - const KILOMETERS_PER_DAY = 'ft'; - const KILOMETERS_PER_HOUR = 'ft'; - const KILOMETERS_PER_MINUTE = 'ft'; - const KILOMETERS_PER_SECOND = 'ft'; - const METERS_PER_DAY = 'ft'; - const METERS_PER_HOUR = 'ft'; - const METERS_PER_MINUTE = 'ft'; - const METERS_PER_SECOND = 'ft'; - const CENTIMETERS_PER_DAY = 'ft'; - const CENTIMETERS_PER_HOUR = 'ft'; - const CENTIMETERS_PER_MINUTES = 'ft'; - const CENTIMETERS_PER_SECOND = 'ft'; - const MILLIMETERS_PER_DAY = 'ft'; - const MILLIMETERS_PER_HOUR = 'ft'; - const MILLIMETERS_PER_MINUTE = 'ft'; - const MILLIMETERS_PER_SECOND = 'ft'; - const YARDS_PER_DAY = 'ft'; - const YARDS_PER_HOUR = 'ft'; - const YARDS_PER_MINUTE = 'ft'; - const YARDS_PER_SECOND = 'ft'; - const INCHES_PER_DAY = 'ft'; - const INCHES_PER_HOUR = 'ft'; - const INCHES_PER_MINUTE = 'ft'; - const INCHES_PER_SECOND = 'ft'; - const FEET_PER_DAY = 'ft'; - const FEET_PER_HOUR = 'ft'; - const FEET_PER_MINUTE = 'ft'; - const FEET_PER_SECOND = 'ft'; - const LIGHT_SPEED = 'ft'; - const MACH = 'ft'; - const KNOTS = 'ft'; + const MILES_PER_DAY = 'mpd'; + const MILES_PER_HOUR = 'mph'; + const MILES_PER_MINUTE = 'mpm'; + const MILES_PER_SECOND = 'mps'; + const KILOMETERS_PER_DAY = 'kpd'; + const KILOMETERS_PER_HOUR = 'kph'; + const KILOMETERS_PER_MINUTE = 'kpm'; + const KILOMETERS_PER_SECOND = 'kps'; + const METERS_PER_DAY = 'md'; + const METERS_PER_HOUR = 'mh'; + const METERS_PER_MINUTE = 'mm'; + const METERS_PER_SECOND = 'ms'; + const CENTIMETERS_PER_DAY = 'cpd'; + const CENTIMETERS_PER_HOUR = 'cph'; + const CENTIMETERS_PER_MINUTES = 'cpm'; + const CENTIMETERS_PER_SECOND = 'cps'; + const MILLIMETERS_PER_DAY = 'mmpd'; + const MILLIMETERS_PER_HOUR = 'mmph'; + const MILLIMETERS_PER_MINUTE = 'mmpm'; + const MILLIMETERS_PER_SECOND = 'mmps'; + const YARDS_PER_DAY = 'ypd'; + const YARDS_PER_HOUR = 'yph'; + const YARDS_PER_MINUTE = 'ypm'; + const YARDS_PER_SECOND = 'yps'; + const INCHES_PER_DAY = 'ind'; + const INCHES_PER_HOUR = 'inh'; + const INCHES_PER_MINUTE = 'inm'; + const INCHES_PER_SECOND = 'ins'; + const FEET_PER_DAY = 'ftd'; + const FEET_PER_HOUR = 'fth'; + const FEET_PER_MINUTE = 'ftm'; + const FEET_PER_SECOND = 'fts'; + const MACH = 'mach'; + const KNOTS = 'knots'; }