class_docstr: Base class for TurntableCamera and ArcballCamera
docstr: Set the camera position and orientation
docstr_tok: ["Set","the","camera","position","and","orientation"]
code: def _update_camera_pos(self):
      """Set the camera position and orientation"""
      # transform will be updated several times; do not update camera
      # transform until we are done.
      ch_em = self.events.transform_change
      with ch_em.blocker(self._update_transform):
          up, forward, right = self._get_dim_vectors()
  
          # Create mapping so correct dim is up
          pp1 = np.array([(0, 0, 0), (0, 0, -1), (1, 0, 0), (0, 1, 0)])
          pp2 = np.array([(0, 0, 0), forward, right, up])
          pos = -self._actual_distance * forward
          scale = [1.0 / a for a in self._flip_factors]
  
          self.transform.matrix = np.linalg.multi_dot(
              (
                  transforms.affine_map(pp1, pp2).T,
                  transforms.translate(pos),
                  self._get_rotation_tr(),
                  transforms.scale(scale),
                  transforms.translate(self.center),
              )
          )
  
imports: from __future__ import division
  import math
  import numpy
  from .base_camera import BaseCamera
  from ...util import keys, transforms
  from ...visuals.transforms import MatrixTransform
label_desc: Use image node_id 5 for calling the Base3DRotationCamera obj's underlying member method code with example usage: obj._update_camera_pos() without return types