
    \h	                     L    S SK JrJr  S SKJrJr  S SKJr  S/r " S S\5      r	g)    )ABCabstractmethod)Symbolsympify)PointBodyBasec                      \ rS rSrSrSS jrS rS r\S 5       r	\S 5       r
\
R                  S	 5       r
\S
 5       r\R                  S 5       r\S 5       r\R                  S 5       r\S 5       r\S 5       r\S 5       r\S 5       rSrg)r      z%Abstract class for body type objects.Nc                     [        U[        5      (       d  [        S5      eXl        Uc  [	        U S35      nUc  [        U S35      nX0l        X l        SU l        / U l	        g )NzSupply a valid name._mass_masscenterr   )

isinstancestr	TypeError_namer   r   mass
masscenterpotential_energypoints)selfnamer   r   s       Y/var/www/auris/envauris/lib/python3.13/site-packages/sympy/physics/mechanics/body_base.py__init__BodyBase.__init__
   sg     $$$233
<TF%.)D${34J	$ !    c                     U R                   $ N)r   r   s    r   __str__BodyBase.__str__   s    yyr   c           	          U R                   R                   S[        U R                  5       S[        U R                  5       S[        U R
                  5       S3$ )N(z, masscenter=z, mass=))	__class____name__reprr   r   r   r   s    r   __repr__BodyBase.__repr__   sO    >>**+1T$))_,=]()dii0AD 	Er   c                     U R                   $ )zThe name of the body.)r   r   s    r   r   BodyBase.name         zzr   c                     U R                   $ )zThe body's center of mass.)r   r   s    r   r   BodyBase.masscenter%   s     r   c                 P    [        U[        5      (       d  [        S5      eXl        g )Nz1The body's center of mass must be a Point object.)r   r   r   r   )r   points     r   r   r-   *   s!    %''OPP r   c                     U R                   $ )zThe body's mass.)r   r   s    r   r   BodyBase.mass0   r+   r   c                 $    [        U5      U l        g r   )r   r   )r   r   s     r   r   r1   5   s    T]
r   c                     U R                   $ )a  The potential energy of the body.

Examples
========

>>> from sympy.physics.mechanics import Particle, Point
>>> from sympy import symbols
>>> m, g, h = symbols('m g h')
>>> O = Point('O')
>>> P = Particle('P', O, m)
>>> P.potential_energy = m * g * h
>>> P.potential_energy
g*h*m

)_potential_energyr   s    r   r   BodyBase.potential_energy9   s    " %%%r   c                 $    [        U5      U l        g r   )r   r4   )r   scalars     r   r   r5   L   s    !(r   c                     g r    r   frames     r   kinetic_energyBodyBase.kinetic_energyP       r   c                     g r   r9   r:   s     r   linear_momentumBodyBase.linear_momentumT   r>   r   c                     g r   r9   r   r/   r;   s      r   angular_momentumBodyBase.angular_momentumX   r>   r   c                     g r   r9   rC   s      r   parallel_axisBodyBase.parallel_axis\   r>   r   )r   r   r   r4   r   r   r   r   )NN)r%   
__module____qualname____firstlineno____doc__r   r   r'   propertyr   r   setterr   r   r   r<   r@   rD   rG   __static_attributes__r9   r   r   r   r      s   /E       ! !
   
[[# # & &$ 1 1        r   N)
abcr   r   sympyr   r   sympy.physics.vectorr   __all__r   r9   r   r   <module>rT      s#    # ! &,Vs Vr   