using StructureHelperCommon.Infrastructures.Interfaces; using StructureHelperCommon.Services.Forces; using System; namespace StructureHelperCommon.Models.Forces { /// public class StrainTuple : IForceTuple { private readonly IUpdateStrategy updateStrategy = new ForceTupleUpdateStrategy(); private static IForceTupleServiceLogic forceTupleServiceLogic; private static IForceTupleServiceLogic ForceTupleServiceLogic => forceTupleServiceLogic ??= new ForceTupleServiceLogic(); /// public Guid Id { get; } /// public double Mx { get; set; } /// public double My { get; set; } /// public double Nz { get; set; } /// public double Qx { get; set; } /// public double Qy { get; set; } /// public double Mz { get; set; } public StrainTuple(Guid id) { Id = id; } public StrainTuple() : this (Guid.NewGuid()) { } public void Clear() { Mx = 0d; My = 0d; Nz = 0d; Qx = 0d; Qy = 0d; Mz = 0d; } /// public object Clone() { var newItem = new StrainTuple(); updateStrategy.Update(newItem, this); return newItem; } public static StrainTuple operator +(StrainTuple first) => first; public static StrainTuple operator +(StrainTuple first, ForceTuple second) { return ForceTupleServiceLogic.SumTuples(first, second) as StrainTuple; } } }