|
@@ -115,3 +115,33 @@ class SlopeCal extends Calculator<StraightLine, double> {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+class SlopeDopplerCal extends Calculator<StraightLine, double> {
|
|
|
+ SlopeDopplerCal(StraightLine ref) : super(ref);
|
|
|
+
|
|
|
+ @override
|
|
|
+ void calculate() {
|
|
|
+ if (ref.feature == null) return;
|
|
|
+
|
|
|
+ final feature = ref.feature!;
|
|
|
+ final viewport = feature.hostVisualArea!.viewport!;
|
|
|
+ final p1 = feature.startPoint;
|
|
|
+ final p2 = feature.endPoint;
|
|
|
+ final pp1 = viewport.convert(p1);
|
|
|
+ final pp2 = viewport.convert(p2);
|
|
|
+
|
|
|
+ final distance = (pp2.y - pp1.y).abs();
|
|
|
+ final time = (pp2.x - pp1.x).abs();
|
|
|
+
|
|
|
+ for (var output in ref.meta.outputs) {
|
|
|
+ if (output.name == MeasureTerms.Slope) {
|
|
|
+ var slope = GeneralFormulas.countSlope(pp2, pp1);
|
|
|
+ feature.updateFloatValue(output, slope, output.unit);
|
|
|
+ } else if (output.name == MeasureTerms.Timespan) {
|
|
|
+ feature.updateFloatValue(output, time, output.unit);
|
|
|
+ } else if (output.name == MeasureTerms.Distance) {
|
|
|
+ feature.updateFloatValue(output, distance, output.unit);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|