123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- import 'package:fis_measure/interfaces/date_types/point.dart';
- import 'package:fis_measure/interfaces/date_types/vector.dart';
- import 'package:fis_measure/interfaces/process/items/terms.dart';
- import 'package:fis_measure/process/calcuators/formulas/general.dart';
- import 'package:fis_measure/process/primitives/multi_method/multiple_trace.dart';
- import 'calculator.dart';
- class TraceCal extends Calculator<TraceItemAbstract, double> {
- TraceCal(TraceItemAbstract ref) : super(ref);
- @override
- void calculate() {
- if (ref.feature == null) return;
- final feature = ref.feature!;
- final viewport = feature.hostVisualArea!.viewport!;
- // 加入画布偏移量
- final canvasOffset = feature.hostVisualArea!.layoutRegion!.topLeft;
- //加入坐标系偏移量
- final coordinateOffset = viewport.region;
- final regionPoints = feature.innerPoints
- .map((e) => viewport
- .convert(
- e.clone().addVector(DVector(-canvasOffset.x, -canvasOffset.y)))
- .addVector(DVector(coordinateOffset.left, -coordinateOffset.top)))
- .toList();
- final yFlippedPoints = regionPoints.map((e) => DPoint(e.x, -e.y)).toList();
- double fakeOutputDate = 0;
- var countVTIResult = GeneralFormulas.countVTI(yFlippedPoints);
- var outputVTI = countVTIResult[0];
- var outputVTIMean = countVTIResult[0];
- var outputTiEnv = countVTIResult[1];
- var outputTAMAX = countVTIResult[2];
- var outputTAMEAN = countVTIResult[2];
- var outputVelocityMax = countVTIResult[3];
- var outputVelocityMean = countVTIResult[3];
- var outputMPG = countVTIResult[4];
- var outputMMPG = countVTIResult[4];
- var outputHR = countVTIResult[5];
- for (var output in ref.meta.outputs) {
- ///TODO:[Gavin] 实现以下计算逻辑
- switch (output.name) {
- case MeasureTerms.TAMAX:
- feature.updateFloatValue(output, outputTAMAX, output.unit);
- break;
- case MeasureTerms.TAMEAN:
- feature.updateFloatValue(output, outputTAMEAN, output.unit);
- break;
- case MeasureTerms.PS:
- feature.updateFloatValue(output, fakeOutputDate, output.unit);
- break;
- case MeasureTerms.ED:
- feature.updateFloatValue(output, fakeOutputDate, output.unit);
- break;
- case MeasureTerms.MD:
- feature.updateFloatValue(output, fakeOutputDate, output.unit);
- break;
- case MeasureTerms.HeartRate:
- feature.updateFloatValue(output, outputHR, output.unit);
- break;
- case MeasureTerms.Acceleration:
- feature.updateFloatValue(output, fakeOutputDate, output.unit);
- break;
- case MeasureTerms.AT:
- feature.updateFloatValue(output, fakeOutputDate, output.unit);
- break;
- case MeasureTerms.PSED:
- feature.updateFloatValue(output, fakeOutputDate, output.unit);
- break;
- case MeasureTerms.EDPS:
- feature.updateFloatValue(output, fakeOutputDate, output.unit);
- break;
- case MeasureTerms.PI:
- feature.updateFloatValue(output, fakeOutputDate, output.unit);
- break;
- case MeasureTerms.PIMD:
- feature.updateFloatValue(output, fakeOutputDate, output.unit);
- break;
- case MeasureTerms.RI:
- feature.updateFloatValue(output, fakeOutputDate, output.unit);
- break;
- case MeasureTerms.RIMD:
- feature.updateFloatValue(output, fakeOutputDate, output.unit);
- break;
- case MeasureTerms.MaxPG:
- feature.updateFloatValue(output, fakeOutputDate, output.unit);
- break;
- case MeasureTerms.VelocityMax:
- feature.updateFloatValue(output, outputVelocityMax, output.unit);
- break;
- case MeasureTerms.VelocityMean:
- feature.updateFloatValue(output, outputVelocityMean, output.unit);
- break;
- case MeasureTerms.PeakPG:
- feature.updateFloatValue(output, fakeOutputDate, output.unit);
- break;
- case MeasureTerms.VTI:
- feature.updateFloatValue(output, outputVTI, output.unit);
- break;
- case MeasureTerms.VTIMean:
- feature.updateFloatValue(output, outputVTIMean, output.unit);
- break;
- case MeasureTerms.MPG:
- feature.updateFloatValue(output, outputMPG, output.unit);
- break;
- case MeasureTerms.MMPG:
- feature.updateFloatValue(output, outputMMPG, output.unit);
- break;
- case MeasureTerms.TiEnv:
- // var outputTiEnv = GeneralFormulas.countEnvelopeTime(points);
- feature.updateFloatValue(output, outputTiEnv, output.unit);
- break;
- // case MeasureTerms.EVEL:
- // feature.updateFloatValue(output, fakeOutputDate, output.unit);
- // break;
- // case MeasureTerms.AVEL:
- // feature.updateFloatValue(output, fakeOutputDate, output.unit);
- // break;
- // case MeasureTerms.EARatio:
- // feature.updateFloatValue(output, fakeOutputDate, output.unit);
- // break;
- // case MeasureTerms.DT:
- // feature.updateFloatValue(output, fakeOutputDate, output.unit);
- // break;
- // case MeasureTerms.PHT:
- // feature.updateFloatValue(output, fakeOutputDate, output.unit);
- // break;
- // case MeasureTerms.VA:
- // feature.updateFloatValue(output, fakeOutputDate, output.unit);
- // break;
- // case MeasureTerms.ADur:
- // feature.updateFloatValue(output, fakeOutputDate, output.unit);
- // break;
- // case MeasureTerms.ATDTRatio:
- // feature.updateFloatValue(output, fakeOutputDate, output.unit);
- // break;
- // case MeasureTerms.ATETRatio:
- // feature.updateFloatValue(output, fakeOutputDate, output.unit);
- // break;
- // case MeasureTerms.Trace:
- // feature.updateFloatValue(output, fakeOutputDate, output.unit);
- // break;
- default:
- break;
- }
- }
- }
- }
|