three_distance.dart 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import 'package:fis_measure/interfaces/process/calculators/output.dart';
  2. import 'package:fis_measure/interfaces/process/calculators/values.dart';
  3. import 'package:fis_measure/process/calcuators/formulas/general.dart';
  4. import 'package:fis_measure/process/items/item.dart';
  5. import 'package:fis_measure/process/primitives/combos/lwh_straightline.dart';
  6. import 'package:fis_measure/process/primitives/ellipse.dart';
  7. import 'package:fis_measure/process/primitives/straightline.dart';
  8. import 'package:vid/us/vid_us_unit.dart';
  9. import 'calculator.dart';
  10. import 'formulas/obstetrics.dart';
  11. class VolumeThreeDistanceCal extends Calculator<LWHStraightLine, double> {
  12. VolumeThreeDistanceCal(LWHStraightLine ref) : super(ref);
  13. @override
  14. void calculate() {
  15. if (ref.feature == null) return;
  16. final l = pickChildFloatValue(ref.l);
  17. final w = pickChildFloatValue(ref.w);
  18. final h = pickChildFloatValue(ref.h);
  19. final feature = ref.feature!;
  20. final viewport = feature.hostVisualArea!.viewport!;
  21. if (l != null && w != null && h != null) {
  22. final value = GeneralFormulas.volumeWithCoefficient(
  23. l,
  24. w,
  25. h,
  26. GeneralFormulas.VolumeCofficient,
  27. );
  28. updateFloatValue(value);
  29. }
  30. }
  31. }
  32. class ThreeDistMeanCalculator extends Calculator<LWHStraightLine, double> {
  33. ThreeDistMeanCalculator(LWHStraightLine ref) : super(ref);
  34. @override
  35. void calculate() {
  36. if (ref.feature == null) return;
  37. final l = pickChildFloatValue(ref.l);
  38. final w = pickChildFloatValue(ref.w);
  39. final h = pickChildFloatValue(ref.h);
  40. if (l != null && w != null && h != null) {
  41. final value = ObstetricsFormulas.gsMean(l, w, h);
  42. updateFloatValue(value);
  43. }
  44. }
  45. }
  46. class ThreeDistMaxCalculator extends Calculator<LWHStraightLine, double> {
  47. ThreeDistMaxCalculator(LWHStraightLine ref) : super(ref);
  48. @override
  49. void calculate() {
  50. if (ref.feature == null) return;
  51. final l = findChildFeature(ref.l);
  52. final w = findChildFeature(ref.w);
  53. final h = findChildFeature(ref.h);
  54. if (l == null && w == null && h == null) return;
  55. double lineL = 0;
  56. double lineW = 0;
  57. double lineH = 0;
  58. if (l != null) lineL = l.value?.pickFloat() ?? 0;
  59. if (w != null) lineW = w.value?.pickFloat() ?? 0;
  60. if (h != null) lineH = h.value?.pickFloat() ?? 0;
  61. double gs = ObstetricsFormulas.gsMax(lineL, lineW, lineH);
  62. updateFloatValue(gs, unit: VidUsUnit.cm, useRound: true);
  63. }
  64. }