protected double SimplifyComponent(UnitOfMeasureComponent component, Dictionary<string, UnitOfMeasureComponent> unitOfMeasureComponents, double finalValue) { var scalarUnit = (ScalarUnitOfMeasure)component.Unit; if (!unitOfMeasureComponents.ContainsKey(scalarUnit.UnitDimension.DomainID)) { unitOfMeasureComponents.Add(scalarUnit.UnitDimension.DomainID, component); return finalValue; } return CombineComponentsOfSameType(component, unitOfMeasureComponents, finalValue, scalarUnit); }
protected double SimplifyComponent(UnitOfMeasureComponent component, Dictionary <string, UnitOfMeasureComponent> unitOfMeasureComponents, double finalValue) { var scalarUnit = (ScalarUnitOfMeasure)component.Unit; if (!unitOfMeasureComponents.ContainsKey(scalarUnit.UnitDimension.DomainID)) { unitOfMeasureComponents.Add(scalarUnit.UnitDimension.DomainID, component); return(finalValue); } return(CombineComponentsOfSameType(component, unitOfMeasureComponents, finalValue, scalarUnit)); }
private static List <UnitOfMeasureComponent> CombineCompositeComponents(CompositeUnitOfMeasure compositeUnitOfMeasure, UnitOfMeasureComponent firstComponent, UnitOfMeasureComponent secondComponent) { var power = CalculateCompositePower(firstComponent.Power, secondComponent.Power); var uomComponents = compositeUnitOfMeasure.Components.ToList(); uomComponents.Remove(firstComponent); uomComponents.Remove(secondComponent); if (power != 0) { uomComponents.Add(new UnitOfMeasureComponent(InternalUnitSystemManager.Instance.UnitOfMeasures[secondComponent.DomainID], secondComponent.Power * 2)); } return(uomComponents); }
protected string BuildDomainId(UnitOfMeasureComponent component) { if (component.Power < -1) { return(string.Format("[{0}{1}]-1", component.DomainID, Math.Abs(component.Power))); } var compositeUom = component.Unit as CompositeUnitOfMeasure; if (compositeUom != null) { return(string.Format("[{0}]{1}", component.DomainID, component.Power)); } return(string.Format("{0}{1}", component.DomainID, component.Power)); }
protected double CombineComponentsOfSameType(UnitOfMeasureComponent component, Dictionary<string, UnitOfMeasureComponent> unitOfMeasureComponents, double finalValue, ScalarUnitOfMeasure scalarUnit) { var existingComponent = unitOfMeasureComponents[scalarUnit.UnitDimension.DomainID]; var convertedValue = _converter.Convert(component.Unit, existingComponent.Unit, 1); var newPower = existingComponent.Power + component.Power; if (newPower == 0) { var testPower = Math.Abs(existingComponent.Power) - 1; for (var i = testPower; i > 1; --i) { convertedValue = _converter.Convert(component.Unit, existingComponent.Unit, convertedValue); } unitOfMeasureComponents.Remove(scalarUnit.UnitDimension.DomainID); } else { unitOfMeasureComponents[scalarUnit.UnitDimension.DomainID] = new UnitOfMeasureComponent(existingComponent.Unit, newPower); } finalValue = component.Power < 0 ? finalValue / convertedValue : finalValue * convertedValue; return finalValue; }
protected double CombineComponentsOfSameType(UnitOfMeasureComponent component, Dictionary <string, UnitOfMeasureComponent> unitOfMeasureComponents, double finalValue, ScalarUnitOfMeasure scalarUnit) { var existingComponent = unitOfMeasureComponents[scalarUnit.UnitDimension.DomainID]; var convertedValue = _converter.Convert(component.Unit, existingComponent.Unit, 1); var newPower = existingComponent.Power + component.Power; if (newPower == 0) { var testPower = Math.Abs(existingComponent.Power) - 1; for (var i = testPower; i > 1; --i) { convertedValue = _converter.Convert(component.Unit, existingComponent.Unit, convertedValue); } unitOfMeasureComponents.Remove(scalarUnit.UnitDimension.DomainID); } else { unitOfMeasureComponents[scalarUnit.UnitDimension.DomainID] = new UnitOfMeasureComponent(existingComponent.Unit, newPower); } finalValue = component.Power < 0 ? finalValue / convertedValue : finalValue * convertedValue; return(finalValue); }
private static List<UnitOfMeasureComponent> CombineCompositeComponents(CompositeUnitOfMeasure compositeUnitOfMeasure, UnitOfMeasureComponent firstComponent, UnitOfMeasureComponent secondComponent) { var power = CalculateCompositePower(firstComponent.Power, secondComponent.Power); var uomComponents = compositeUnitOfMeasure.Components.ToList(); uomComponents.Remove(firstComponent); uomComponents.Remove(secondComponent); if (power != 0) { uomComponents.Add(new UnitOfMeasureComponent(InternalUnitSystemManager.Instance.UnitOfMeasures[secondComponent.DomainID], secondComponent.Power * 2)); } return uomComponents; }
protected string BuildDomainId(UnitOfMeasureComponent component) { if (component.Power < -1) return string.Format("[{0}{1}]-1", component.DomainID, Math.Abs(component.Power)); var compositeUom = component.Unit as CompositeUnitOfMeasure; if (compositeUom != null) return string.Format("[{0}]{1}", component.DomainID, component.Power); return string.Format("{0}{1}", component.DomainID, component.Power); }