public InstantVolumeMeasurement(string name, IVolume vol, IInstantBodyMeasurement <T> bodyMeasurement, Func <T, IBody, T> accumFunc, Func <T, T> finalizeFunc = null) { Name = name; Volume = vol; BodyMeasurement = bodyMeasurement; AccumulationFunc = accumFunc; FinalizeFunc = finalizeFunc ?? (r => r); }
public static InstantVolumeMeasurement <double> VolumeSum(IVolume vol, IInstantBodyMeasurement <double> bodyMeas) { return(new InstantVolumeMeasurement <double>($"Total {bodyMeas.Name}", vol, bodyMeas, (sum, b) => sum += bodyMeas.TakeMeasurement(b))); }
public static InstantVolumeMeasurement <double> VolumeAvg(IVolume vol, IInstantBodyMeasurement <double> bodyMeas) { return(new InstantVolumeMeasurement <double>($"Average {bodyMeas.Name}", vol, bodyMeas, (sum, b) => sum += bodyMeas.TakeMeasurement(b), sum => sum / vol.TotalVolume)); }
/// <summary> /// Performs an instantaneous measurement on the specified body. /// </summary> public static T Measure <T>(this IBody b, IInstantBodyMeasurement <T> measurement) => measurement.TakeMeasurement(b);