/// <summary> /// Konvertierungskonstruktor: Erzeugt aus den Daten einer Klasse, die zur gleichen physikalischen Größe gehört wie z.B. Länge /// eine neue Instanz dieser Klasse. /// Hinweis: In den Ableitungen dieser abstrakten Basisklasse werden z.B. ToBaseUnitConversionFactor und OrderOfMagnitude /// festgelegt. Z.B. gibt es eine Klasse für Centimeter und eine zweite für Kilometer. /// </summary> /// <param name="mVector"></param> public MeasuredVector(MeasuredVector mVector) { try { if (ToBaseUnitConversionFactor == mVector.ToBaseUnitConversionFactor) { // Fall: Einheiten gleich if (OrderOfMagnitude == mVector.OrderOfMagnitude) { // Fall: Größenordnungen gleich CreateVector(mVector.Vector.coordinates); } else { // Fall: Größenordnungen verschieden CreateVector(Mag.FromTo(mVector.Vector, mVector.OrderOfMagnitude, OrderOfMagnitude).coordinates); } } else { // Fall: Einheiten verschieden CreateVector(Mag.FromTo(mVector.VectorInBaseUnit * (1 / ToBaseUnitConversionFactor), Mag.OrderOfMagnitudeEnum.One, OrderOfMagnitude).coordinates); } } catch (Exception ex) { throw new MeasuredVectorException("Konstruktor MeasuredVector(MeasuredVector mVector)", ex); } }
public MeasuredValue(MeasuredValue mValue) { InitValue(); if (ToBaseUnitConversionFactor == mValue.ToBaseUnitConversionFactor) { // Fall: Einheiten gleich if (OrderOfMagnitude == mValue.OrderOfMagnitude) { // Fall: Größenordnungen gleich Value = mValue.Value; } else { // Fall: Größenordnungen verschieden Value = Mag.FromTo(mValue.Value, mValue.OrderOfMagnitude, OrderOfMagnitude); } } else { // Fall: Einheiten verschieden Value = Mag.FromTo(mValue.ValueInBaseUnit * (1 / ToBaseUnitConversionFactor), Mag.OrderOfMagnitudeEnum.One, OrderOfMagnitude); } }