diff options
Diffstat (limited to 'src/argaze/AreaOfInterest/AOI3DScene.py')
-rw-r--r-- | src/argaze/AreaOfInterest/AOI3DScene.py | 21 |
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. |