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.
docstr: Kinetic energy of the body.
  
  Parameters
  ==========
  
  frame : ReferenceFrame or Body
      The Body's angular velocity and the velocity of it's mass
      center are typically defined with respect to an inertial frame but
      any relevant frame in which the velocities are known can be supplied.
  
  Examples
  ========
  
  >>> from sympy.physics.mechanics import Body, ReferenceFrame, Point
  >>> from sympy import symbols
  >>> m, v, r, omega = symbols('m v r omega')
  >>> N = ReferenceFrame('N')
  >>> O = Point('O')
  >>> P = Body('P', masscenter=O, mass=m)
  >>> P.masscenter.set_vel(N, v * N.y)
  >>> P.kinetic_energy(N)
  m*v**2/2
  
  >>> N = ReferenceFrame('N')
  >>> b = ReferenceFrame('b')
  >>> b.set_ang_vel(N, omega * b.x)
  >>> P = Point('P')
  >>> P.set_vel(N, v * N.x)
  >>> B = Body('B', masscenter=P, frame=b)
  >>> B.kinetic_energy(N)
  B_ixx*omega**2/2 + B_mass*v**2/2
  
  See Also
  ========
  
  sympy.physics.mechanics : Particle, RigidBody
docstr_tok: ["Kinetic","energy","of","the","body",".","Parameters","==========","frame",":","ReferenceFrame","or","Body","The","Body","'s","angular","velocity","and","the","velocity","of","it","'s","mass","center","are","typically","defined","with","respect","to","an","inertial","frame","but","any","relevant","frame","in","which","the","velocities","are","known","can","be","supplied",".","Examples","========",">",">",">","from","sympy.physics.mechanics","import","Body",",","ReferenceFrame",",","Point",">",">",">","from","sympy","import","symbols",">",">",">","m",",","v",",","r",",","omega","=","symbols","(","'m","v","r","omega","'",")",">",">",">","N","=","ReferenceFrame","(","'N","'",")",">",">",">","O","=","Point","(","'","O","'",")",">",">",">","P","=","Body","(","'","P","'",",","masscenter=O",",","mass=m",")",">",">",">","P.masscenter.set_vel","(","N",",","v","*","N.y",")",">",">",">","P.kinetic_energy","(","N",")","m","*","v","*","*","2\/2",">",">",">","N","=","ReferenceFrame","(","'N","'",")",">",">",">","b","=","ReferenceFrame","(","'","b","'",")",">",">",">","b.set_ang_vel","(","N",",","omega","*","b.x",")",">",">",">","P","=","Point","(","'","P","'",")",">",">",">","P.set_vel","(","N",",","v","*","N.x",")",">",">",">","B","=","Body","(","'","B","'",",","masscenter=P",",","frame=b",")",">",">",">","B.kinetic_energy","(","N",")","B_ixx","*","omega","*","*","2\/2","+","B_mass","*","v","*","*","2\/2","See","Also","========","sympy.physics.mechanics",":","Particle",",","RigidBody"]
code: def kinetic_energy(self, frame):
      """Kinetic energy of the body.
  
      Parameters
      ==========
  
      frame : ReferenceFrame or Body
          The Body's angular velocity and the velocity of it's mass
          center are typically defined with respect to an inertial frame but
          any relevant frame in which the velocities are known can be supplied.
  
      Examples
      ========
  
      >>> from sympy.physics.mechanics import Body, ReferenceFrame, Point
      >>> from sympy import symbols
      >>> m, v, r, omega = symbols('m v r omega')
      >>> N = ReferenceFrame('N')
      >>> O = Point('O')
      >>> P = Body('P', masscenter=O, mass=m)
      >>> P.masscenter.set_vel(N, v * N.y)
      >>> P.kinetic_energy(N)
      m*v**2/2
  
      >>> N = ReferenceFrame('N')
      >>> b = ReferenceFrame('b')
      >>> b.set_ang_vel(N, omega * b.x)
      >>> P = Point('P')
      >>> P.set_vel(N, v * N.x)
      >>> B = Body('B', masscenter=P, frame=b)
      >>> B.kinetic_energy(N)
      B_ixx*omega**2/2 + B_mass*v**2/2
  
      See Also
      ========
  
      sympy.physics.mechanics : Particle, RigidBody
  
      """
      if isinstance(frame, Body):
          frame = Body.frame
      if self.is_rigidbody:
          return RigidBody(
              self.name,
              self.masscenter,
              self.frame,
              self.mass,
              (self.central_inertia, self.masscenter),
          ).kinetic_energy(frame)
      return Particle(
          self.name, self.masscenter, self.mass
      ).kinetic_energy(frame)
  
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 10 for calling the Body obj's underlying member method code with example usage: obj.kinetic_energy(frame) and returns: Particle, RigidBody