12345678910111213141516171819202122232425262728293031323334353637 |
- import 'package:fis_measure/interfaces/date_types/matrix.dart';
- import 'package:fis_measure/process/primitives/combos/depth2baseline.dart';
- import 'package:fis_measure/process/primitives/location.dart';
- import 'package:fis_measure/process/primitives/ray.dart';
- import 'package:vid/us/vid_us_unit.dart';
- import 'calculator.dart';
- class DistanceToRayCal extends Calculator<DepthToBaseLine, double> {
- DistanceToRayCal(DepthToBaseLine ref) : super(ref);
- @override
- void calculate() {
- if (ref.feature == null) return;
- final feature = ref.feature!;
- final depthFeature = findBaselineFeatue<LocationFeature>(ref.depth);
- final baselineFeature = findBaselineFeatue<RayFeature>(ref.baseline);
- if (depthFeature == null || baselineFeature == null) return;
- final depthLocation = depthFeature.point;
- final baseLinePoint = baselineFeature.point;
- final baseLineAngle = baselineFeature.angle;
- var matrix = DMatrix();
- matrix.rotateAt(
- (baselineFeature.isReverse ? 1 : -1) * baseLineAngle,
- baseLinePoint.x,
- baseLinePoint.y,
- );
- var pt = matrix.transformWidthPoint(depthLocation);
- var distance = pt.y - baseLinePoint.y;
- feature.updateFloatValue(ref.meta.outputs.first, distance, VidUsUnit.cm);
- }
- }
|