OptiTrackPoint.cpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // Include own headers
  2. #include "OptiTrackPoint.hpp"
  3. // Include modules
  4. #include "MeshTools.hpp"
  5. OptiTrackPoint::OptiTrackPoint(const osg::Vec3 point, const osg::Vec3 normal, const osg::Vec3 normalModifier, const float normalRotation, const bool compensation, const double length, const double radius): TrackPoint(point, normal, normalModifier, normalRotation, compensation) {
  6. _length = length;
  7. _radius = radius;
  8. updateShift();
  9. }
  10. double OptiTrackPoint::getLength() {
  11. return _length;
  12. }
  13. double OptiTrackPoint::getRadius() {
  14. return _radius;
  15. }
  16. OptiTrackSettings OptiTrackPoint::getOptiTrackSettings() {
  17. return OptiTrackSettings {_length, _radius};
  18. }
  19. void OptiTrackPoint::updateOptiTrackSettings(OptiTrackSettings settings) {
  20. _length = settings.length;
  21. _radius = settings.radius;
  22. updateShift();
  23. }
  24. void OptiTrackPoint::updateShift() {
  25. osg::Vec3 shift = _normal.operator*(_length);
  26. _trackOrigin = shift.operator+(_origin);
  27. }
  28. float OptiTrackPoint::getNormalCompensation() {
  29. float compensationLength = MeshTools::compensationLength(_normal, _normalModifier, _radius);
  30. return compensationLength > 0.0f ? compensationLength : 0.0f;
  31. }
  32. int OptiTrackPoint::getMinimumRequiredPoints() {
  33. return _minimumPointsRequired;
  34. }