class_docstr: Body is a common representation of either a RigidBody or a Particle SymPy
  object depending on what is passed in during initialization. If a mass is
  passed in and central_inertia is left as None, the Particle object is
  created. Otherwise a RigidBody object will be created.
  
  Explanation
  ===========
  
  The attributes that Body possesses will be the same as a Particle instance
  or a Rigid Body instance depending on which was created. Additional
  attributes are listed below.
  
  Attributes
  ==========
  
  name : string
      The body's name
  masscenter : Point
      The point which represents the center of mass of the rigid body
  frame : ReferenceFrame
      The reference frame which the body is fixed in
  mass : Sympifyable
      The body's mass
  inertia : (Dyadic, Point)
      The body's inertia around its center of mass. This attribute is specific
      to the rigid body form of Body and is left undefined for the Particle
      form
  loads : iterable
      This list contains information on the different loads acting on the
      Body. Forces are listed as a (point, vector) tuple and torques are
      listed as (reference frame, vector) tuples.
  
  Parameters
  ==========
  
  name : String
      Defines the name of the body. It is used as the base for defining
      body specific properties.
  masscenter : Point, optional
      A point that represents the center of mass of the body or particle.
      If no point is given, a point is generated.
  mass : Sympifyable, optional
      A Sympifyable object which represents the mass of the body. If no
      mass is passed, one is generated.
  frame : ReferenceFrame, optional
      The ReferenceFrame that represents the reference frame of the body.
      If no frame is given, a frame is generated.
  central_inertia : Dyadic, optional
      Central inertia dyadic of the body. If none is passed while creating
      RigidBody, a default inertia is generated.
  
  Examples
  ========
  
  Default behaviour. This results in the creation of a RigidBody object for
  which the mass, mass center, frame and inertia attributes are given default
  values. ::
  
      >>> from sympy.physics.mechanics import Body
      >>> body = Body('name_of_body')
  
  This next example demonstrates the code required to specify all of the
  values of the Body object. Note this will also create a RigidBody version of
  the Body object. ::
  
      >>> from sympy import Symbol
      >>> from sympy.physics.mechanics import ReferenceFrame, Point, inertia
      >>> from sympy.physics.mechanics import Body
      >>> mass = Symbol('mass')
      >>> masscenter = Point('masscenter')
      >>> frame = ReferenceFrame('frame')
      >>> ixx = Symbol('ixx')
      >>> body_inertia = inertia(frame, ixx, 0, 0)
      >>> body = Body('name_of_body', masscenter, mass, frame, body_inertia)
  
  The minimal code required to create a Particle version of the Body object
  involves simply passing in a name and a mass. ::
  
      >>> from sympy import Symbol
      >>> from sympy.physics.mechanics import Body
      >>> mass = Symbol('mass')
      >>> body = Body('name_of_body', mass=mass)
  
  The Particle version of the Body object can also receive a masscenter point
  and a reference frame, just not an inertia.
code: def __init__(
      self,
      name,
      masscenter=None,
      mass=None,
      frame=None,
      central_inertia=None,
  ):
      self._loads = []
  
      if frame is None:
          frame = ReferenceFrame(name + "_frame")
  
      if masscenter is None:
          masscenter = Point(name + "_masscenter")
  
      if central_inertia is None and mass is None:
          ixx = Symbol(name + "_ixx")
          iyy = Symbol(name + "_iyy")
          izz = Symbol(name + "_izz")
          izx = Symbol(name + "_izx")
          ixy = Symbol(name + "_ixy")
          iyz = Symbol(name + "_iyz")
          _inertia = Inertia.from_inertia_scalars(
              masscenter, frame, ixx, iyy, izz, ixy, iyz, izx
          )
      else:
          _inertia = (central_inertia, masscenter)
  
      if mass is None:
          _mass = Symbol(name + "_mass")
      else:
          _mass = mass
  
      masscenter.set_vel(frame, 0)
  
      # If user passes masscenter and mass then a particle is created
      # otherwise a rigidbody. As a result a body may or may not have inertia.
      # Note: BodyBase.__init__ is used to prevent problems with super() calls in
      # Particle and RigidBody arising due to multiple inheritance.
      if central_inertia is None and mass is not None:
          BodyBase.__init__(self, name, masscenter, _mass)
          self.frame = frame
          self._central_inertia = Dyadic(0)
      else:
          BodyBase.__init__(self, name, masscenter, _mass)
          self.frame = frame
          self.inertia = _inertia
  
imports: from sympy import Symbol
  from sympy.physics.vector import Point, Vector, ReferenceFrame, Dyadic
  from sympy.physics.mechanics import RigidBody, Particle, Inertia
  from sympy.physics.mechanics.body_base import BodyBase
label_desc: Use image node_id 1 to create a new Body object from inherited base classes: RigidBody, Particle with example: obj = Body(name, masscenter, mass, frame, central_inertia)