distance.dart 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import 'package:fis_measure/process/calcuators/formulas/general.dart';
  2. import '../primitives/straightline.dart';
  3. import 'calculator.dart';
  4. class DistanceCal extends Calculator<StraightLine, double> {
  5. DistanceCal(StraightLine ref) : super(ref);
  6. @override
  7. void calculate() {
  8. if (ref.feature == null) return;
  9. final feature = ref.feature!;
  10. // TODO:xxx
  11. final viewport = feature.hostVisualArea!.viewport!;
  12. final p1 = feature.startPoint;
  13. final p2 = feature.endPoint;
  14. final pp1 = viewport.convert(p1);
  15. final pp2 = viewport.convert(p2);
  16. final value = (pp2 - pp1).length.abs();
  17. final floatValue = updateFloatValue(value);
  18. floatValue!.name = ref.displayName;
  19. }
  20. }
  21. class VolumeOneDistanceCal extends Calculator<StraightLine, double> {
  22. VolumeOneDistanceCal(StraightLine ref) : super(ref);
  23. @override
  24. void calculate() {
  25. if (ref.feature == null) return;
  26. final feature = ref.feature!;
  27. // TODO:xxx
  28. final viewport = feature.hostVisualArea!.viewport!;
  29. final p1 = feature.startPoint;
  30. final p2 = feature.endPoint;
  31. final pp1 = viewport.convert(p1);
  32. final pp2 = viewport.convert(p2);
  33. final value = (pp2 - pp1).length.abs();
  34. double volume = GeneralFormulas.volume(value);
  35. final floatValue = updateFloatValue(volume);
  36. floatValue!.name = ref.displayName;
  37. }
  38. }