< Summary - ReFlex - Library

Information
Class: Implementation.Components.CalibrationManager
Assembly: ReFlex.Core.Implementation
File(s): D:\a\reflex\reflex\library\src\Core\Implementation\Components\CalibrationManager.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 68
Coverable lines: 68
Total lines: 119
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 20
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor()100%210%
get_CalibrationMatrix()100%210%
get_UnitMatrix4X4()100%210%
Initialize(...)100%210%
Initialize(...)100%210%
OnCalibratrionFinished(...)100%210%
Calibrate(...)0%156120%
LoadCalibration(...)0%620%
ResetCalibration()100%210%
OnCalibrationUpdated()0%2040%
Dispose()0%620%

File(s)

D:\a\reflex\reflex\library\src\Core\Implementation\Components\CalibrationManager.cs

#LineLine coverage
 1using System;
 2using Implementation.Interfaces;
 3using MathNet.Numerics.LinearAlgebra;
 4using ReFlex.Core.Calibration.Components;
 5using ReFlex.Core.Calibration.Util;
 6using ReFlex.Core.Common.Components;
 7
 8namespace Implementation.Components
 9{
 10    public class CalibrationManager : ICalibrationManager, IDisposable
 11    {
 12        private Calibrator _calibrator;
 13
 014        private readonly float[,] _unitMat4X4 = {
 015            { 1.0f, 0.0f, 0.0f, 0.0f },
 016            { 0.0f, 1.0f, 0.0f, 0.0f },
 017            { 0.0f, 0.0f, 1.0f, 0.0f },
 018            { 0.0f, 0.0f, 0.0f, 1.0f }
 019        };
 20
 21        public event EventHandler<Calibration> CalibrationUpdated;
 022        public Matrix<float> CalibrationMatrix { get; set; }
 23
 024        public Matrix<float> UnitMatrix4X4 => Matrix<float>.Build.DenseOfArray(_unitMat4X4);
 25
 26        [Obsolete]
 27        public void Initialize(Calibrator calibratorInstance, string defaultCalibration)
 028        {
 029            CalibrationMatrix = Matrix<float>.Build.DenseOfArray(_unitMat4X4);
 030            _calibrator = calibratorInstance;
 031            LoadCalibration(defaultCalibration);
 032            CalibrationMatrix = _calibrator.CalibrationMatrix;
 33
 034            _calibrator.CalibrationFinished += OnCalibratrionFinished;
 035        }
 36
 37        public void Initialize(Calibrator calibratorInstance, Calibration defaultCalibration)
 038        {
 039            CalibrationMatrix = Matrix<float>.Build.DenseOfArray(_unitMat4X4);
 040            _calibrator = calibratorInstance;
 041            _calibrator.Load(defaultCalibration);
 042            CalibrationMatrix = _calibrator.CalibrationMatrix;
 43
 044            _calibrator.CalibrationFinished += OnCalibratrionFinished;
 045        }
 46
 47        private void OnCalibratrionFinished(object sender, Matrix<float> e)
 048        {
 049            OnCalibrationUpdated();
 050        }
 51
 52        public Interaction Calibrate(Interaction source)
 053        {
 054            if (source == null || CalibrationMatrix == null)
 055                return default(Interaction);
 56
 057            var p3 = new Point3();
 058            p3.Set(source.Position);
 59
 060            var inter = new Interaction(p3,source);
 61
 062            inter.Position.X = (inter.Position.X * CalibrationMatrix.AsColumnMajorArray()[0] +
 063                                inter.Position.Y * CalibrationMatrix.AsColumnMajorArray()[4] +
 064                                1.0f * CalibrationMatrix.AsColumnMajorArray()[8] - _calibrator.StartX) / _calibrator.Wid
 65
 066            if (inter.Position.X < 0)
 067                inter.Position.X = 0;
 68
 069            if (inter.Position.X > 1)
 070                inter.Position.X = 1;
 71
 072            inter.Position.Y = (inter.Position.X * CalibrationMatrix.AsColumnMajorArray()[1] +
 073                                inter.Position.Y * CalibrationMatrix.AsColumnMajorArray()[5] +
 074                                1.0f * CalibrationMatrix.AsColumnMajorArray()[9] - _calibrator.StartY) / _calibrator.Hei
 75
 076            if (inter.Position.Y < 0)
 077                inter.Position.Y = 0;
 78
 079            if (inter.Position.Y > 1)
 080                inter.Position.Y = 1;
 81
 082            inter.Position.Z = inter.Position.Z * CalibrationMatrix.AsColumnMajorArray()[10];
 83
 084            return inter;
 085        }
 86
 87        [Obsolete]
 88        public void LoadCalibration(string calib)
 089        {
 90
 091            if (string.IsNullOrWhiteSpace(calib))
 092                return;
 093            _calibrator.Load(calib);
 94
 095            OnCalibrationUpdated();
 096        }
 97
 98        public void ResetCalibration()
 099        {
 0100            CalibrationMatrix = UnitMatrix4X4;
 0101            _calibrator.Reset();
 0102            _calibrator.UpdateSource();
 103
 0104            OnCalibrationUpdated();
 0105        }
 106
 107        private void OnCalibrationUpdated()
 0108        {
 0109            if (_calibrator != null)
 0110                CalibrationUpdated?.Invoke(this, _calibrator.CalibrationValues);
 0111        }
 112
 113        public void Dispose()
 0114        {
 0115            if (_calibrator != null)
 0116                _calibrator.CalibrationFinished -= OnCalibratrionFinished;
 0117        }
 118    }
 119}