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);
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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;
        }
Exemple #6
0
        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);
        }