code: def rotate(
      point: type_alias.TensorLike,
      matrix: type_alias.TensorLike,
      name: str = "rotation_matrix_3d_rotate",
  ) -> tf.Tensor:
      """Rotate a point using a rotation matrix 3d.
  
      Note:
        In the following, A1 to An are optional batch dimensions, which must be
        broadcast compatible.
  
      Args:
        point: A tensor of shape `[A1, ..., An, 3]`, where the last dimension
          represents a 3d point.
        matrix: A tensor of shape `[A1, ..., An, 3,3]`, where the last dimension
          represents a 3d rotation matrix.
        name: A name for this op that defaults to "rotation_matrix_3d_rotate".
  
      Returns:
        A tensor of shape `[A1, ..., An, 3]`, where the last dimension represents
        a 3d point.
  
      Raises:
        ValueError: If the shape of `point` or `rotation_matrix_3d` is not
        supported.
      """
      with tf.name_scope(name):
          point = tf.convert_to_tensor(value=point)
          matrix = tf.convert_to_tensor(value=matrix)
  
          shape.check_static(
              tensor=point, tensor_name="point", has_dim_equals=(-1, 3)
          )
          shape.check_static(
              tensor=matrix,
              tensor_name="matrix",
              has_rank_greater_than=1,
              has_dim_equals=((-2, 3), (-1, 3)),
          )
          shape.compare_batch_dimensions(
              tensors=(point, matrix),
              tensor_names=("point", "matrix"),
              last_axes=(-2, -3),
              broadcast_compatible=True,
          )
          matrix = assert_rotation_matrix_normalized(matrix)
  
          point = tf.expand_dims(point, axis=-1)
          common_batch_shape = shape.get_broadcasted_shape(
              point.shape[:-2], matrix.shape[:-2]
          )
  
          def dim_value(dim):
              return (
                  1 if dim is None else tf.compat.dimension_value(dim)
              )
  
          common_batch_shape = [
              dim_value(dim) for dim in common_batch_shape
          ]
          point = tf.broadcast_to(point, common_batch_shape + [3, 1])
          matrix = tf.broadcast_to(matrix, common_batch_shape + [3, 3])
          rotated_point = tf.matmul(matrix, point)
          return tf.squeeze(rotated_point, axis=-1)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from absl import flags
  from six.moves import range
  import tensorflow
  from tensorflow_graphics.geometry.transformation import rotation_matrix_common
  from tensorflow_graphics.util import asserts
  from tensorflow_graphics.util import export_api
  from tensorflow_graphics.util import shape
  from tensorflow_graphics.util import tfg_flags
  from tensorflow_graphics.util import type_alias
label_desc: Use image node_id 9 for calling a global function with example usage: rotate(point, matrix, name) and returns: tf, unknown