aboutsummaryrefslogtreecommitdiff
path: root/src/argaze/AreaOfInterest/AOI3DScene.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/argaze/AreaOfInterest/AOI3DScene.py')
-rw-r--r--src/argaze/AreaOfInterest/AOI3DScene.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/argaze/AreaOfInterest/AOI3DScene.py b/src/argaze/AreaOfInterest/AOI3DScene.py
index cb5b5a3..3888d75 100644
--- a/src/argaze/AreaOfInterest/AOI3DScene.py
+++ b/src/argaze/AreaOfInterest/AOI3DScene.py
@@ -149,6 +149,27 @@ class AOI3DScene(AOIFeatures.AOIScene):
file.write('s off\n')
file.write(vertices_ids + '\n')
+ @property
+ def orthogonal_projection(self) -> AOI2DScene.AOI2DScene:
+ """
+ Orthogonal projection of whole scene.
+
+ Returns:
+ projected AOI 2D scene
+ """
+
+ scene_size = self.size
+ scene_center = self.center
+
+ # Center, step back and rotate pose to get whole scene into field of view
+ tvec = scene_center*[-1, 1, 0] + [0, 0, scene_size[1]]
+ rvec = numpy.array([[-numpy.pi, 0.0, 0.0]])
+
+ # Edit optic intrinsic parameter to capture whole scene
+ K = numpy.array([[scene_size[1]/scene_size[0], 0.0, 0.5], [0.0, 1., 0.5], [0.0, 0.0, 1.0]])
+
+ return self.project(tvec, rvec, K)
+
def vision_cone(self, cone_radius, cone_height, cone_tip=[0., 0., 0.], cone_direction=[0., 0., 1.]) -> Tuple[AOI3DSceneType, AOI3DSceneType]:
"""Get AOI which are inside and out a given cone field.