/// <summary> /// Defines a conversion factor between two units. /// </summary> /// <param name="sourceUnit">The conversion source unit.</param> /// <param name="targetUnit">The conversion destination unit.</param> /// <param name="factor">The conversion factor.</param> public static UnitConversion Define(Unit sourceUnit, Unit targetUnit, double factor) { var conversion = new UnitConversion(sourceUnit, targetUnit, factor); UnitConversionManager.Add(conversion); return(conversion); }
private static Tree <UnitConversion> getConversionTree(Unit sourceUnit, Unit targetUnit, Recursion <Unit> recursion = null) { if (recursion == null) { recursion = new Recursion <Unit>(); } var tree = new Tree <UnitConversion>(); var sourceUnitConversions = UnitConversionManager.GetDirectFrom(sourceUnit); foreach (var conversion in sourceUnitConversions) { if (!recursion.Contains(conversion.TargetUnit)) { TreeItem <UnitConversion> subItem; if (Utils.NullableEquals(conversion.TargetUnit, targetUnit)) { subItem = new TreeItem <UnitConversion>(conversion); tree.Children.Add(subItem); break; } else { var newRecursion = recursion.Recurse(conversion.TargetUnit); var subTree = getConversionTree(conversion.TargetUnit, targetUnit, newRecursion); subItem = subTree.ToTreeItem(conversion); } tree.Children.Add(subItem); } } return(tree); }
/// <summary> /// Gets all the possible direct conversions to the specified target unit. /// </summary> /// <param name="targetUnit">The conversion target unit.</param> /// <returns></returns> public static UnitConversion[] GetDirectTo(Unit targetUnit) => UnitConversionManager.GetDirectTo(targetUnit);
/// <summary> /// Gets all the possible direct conversions from the specified source unit. /// </summary> /// <param name="sourceUnit">The conversion source unit.</param> /// <returns></returns> public static UnitConversion[] GetDirectFrom(Unit sourceUnit) => UnitConversionManager.GetDirectFrom(sourceUnit);
/// <summary> /// Gets the direct conversion between two units. /// </summary> /// <param name="sourceUnit">The conversion source unit.</param> /// <param name="targetUnit">The conversion target unit.</param> /// <returns></returns> public static UnitConversion GetDirect(Unit sourceUnit, Unit targetUnit) => UnitConversionManager.GetDirect(sourceUnit, targetUnit);
/// <summary> /// Gets the scale zero for the specified unit. /// </summary> /// <param name="unit">The unit.</param> /// <returns>The scale zero amount.</returns> public static Scalar GetScaleZero(Unit unit) => UnitConversionManager.GetScaleZero(unit);
/// <summary> /// Defines the scale zero for the specified unit. /// </summary> /// <param name="unit">The unit.</param> /// <param name="zero">The scale zero amount.</param> public static void DefineScaleZero(Unit unit, Scalar zero) => UnitConversionManager.DefineScaleZero(unit, zero);