CustusX  2023.01.05-dev+develop.0da12
An IGT application
cxNavigationAlgorithms.h
Go to the documentation of this file.
1 /*=========================================================================
2 This file is part of CustusX, an Image Guided Therapy Application.
3 
4 Copyright (c) SINTEF Department of Medical Technology.
5 All rights reserved.
6 
7 CustusX is released under a BSD 3-Clause license.
8 
9 See Lisence.txt (https://github.com/SINTEFMedtek/CustusX/blob/master/License.txt) for details.
10 =========================================================================*/
11 #ifndef CXNAVIGATIONALGORITHMS_H
12 #define CXNAVIGATIONALGORITHMS_H
13 
14 #include "org_custusx_core_view_Export.h"
15 
16 #include "cxTransform3D.h"
17 #include "cxForwardDeclarations.h"
18 
19 namespace cx
20 {
21 
33 class org_custusx_core_view_EXPORT NavigationAlgorithms
34 {
35 public:
36 
41  static Vector3D findCameraPosOnLineFixedDistanceFromFocus(Vector3D p_line, Vector3D e_line, double distance, Vector3D focus);
47  static Vector3D elevateCamera(double angle, Vector3D camera, Vector3D focus, Vector3D vup);
52  static Vector3D orthogonalize_vup(Vector3D vup, Vector3D vpn, Vector3D vup_fallback);
57  static Vector3D findCameraPosByZoomingToROI(double viewAngle_vertical, double viewAngle_horizontal,
58  Vector3D focus, Vector3D vup, Vector3D vpn,
59  const DoubleBoundingBox3D& bb);
60 
61  // primitives, used by other algorithms
66  static double findMaxCameraDistance(Vector3D n, double viewAngle,
67  Vector3D focus, Vector3D vpn,
68  const DoubleBoundingBox3D &bb);
73  static double findCameraDistanceKeepPointInViewOneAxis(Vector3D n, double viewAngle,
74  Vector3D focus, Vector3D vpn, Vector3D p);
80  static double findCameraDistanceKeepPointInView(double viewAngle, Vector3D focus, Vector3D vpn, Vector3D p);
81 };
82 
83 
87 } //namespace cx
88 
89 #endif // CXNAVIGATIONALGORITHMS_H
Representation of a floating-point bounding box in 3D. The data are stored as {xmin,xmax,ymin,ymax,zmin,zmax}, in order to simplify communication with vtk.
Eigen::Vector3d Vector3D
Vector3D is a representation of a point or vector in 3D.
Definition: cxVector3D.h:42
Namespace for all CustusX production code.