
    g	                     T    d dl mZmZ d dlmZmZ d dlmZ dgZ G d de          Z	dS )    )ABCabstractmethod)Symbolsympify)PointBodyBasec                   6   e Zd ZdZddZd Zd Zed             Zed             Z	e	j
        d             Z	ed	             Zej
        d
             Zed             Zej
        d             Zed             Zed             Zed             Zed             ZdS )r   z%Abstract class for body type objects.Nc                     t          |t                    st          d          || _        |t	          | d          }|t          | d          }|| _        || _        d| _        g | _	        d S )NzSupply a valid name._mass_masscenterr   )

isinstancestr	TypeError_namer   r   mass
masscenterpotential_energypoints)selfnamer   r   s       ]/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/physics/mechanics/body_base.py__init__zBodyBase.__init__
   s     $$$ 	42333
<T...))D$33344J	$ !    c                     | j         S N)r   r   s    r   __str__zBodyBase.__str__   s
    yr   c           	          | j         j         dt          | j                   dt          | j                   dt          | j                   dS )N(z, masscenter=z, mass=))	__class____name__reprr   r   r   r   s    r   __repr__zBodyBase.__repr__   sh    >* D DT$)__ D D((D D15diD D D 	Er   c                     | j         S )zThe name of the body.)r   r   s    r   r   zBodyBase.name         zr   c                     | j         S )zThe body's center of mass.)r   r   s    r   r   zBodyBase.masscenter%   s     r   c                 \    t          |t                    st          d          || _        d S )Nz1The body's center of mass must be a Point object.)r   r   r   r   )r   points     r   r   zBodyBase.masscenter*   s2    %'' 	QOPPP r   c                     | j         S )zThe body's mass.)r   r   s    r   r   zBodyBase.mass0   r&   r   c                 .    t          |          | _        d S r   )r   r   )r   r   s     r   r   zBodyBase.mass5   s    T]]


r   c                     | j         S )as  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   zBodyBase.potential_energy9   s    " %%r   c                 .    t          |          | _        d S r   )r   r-   )r   scalars     r   r   zBodyBase.potential_energyL   s    !(r   c                     d S r    r   frames     r   kinetic_energyzBodyBase.kinetic_energyP       r   c                     d S r   r1   r2   s     r   linear_momentumzBodyBase.linear_momentumT   r5   r   c                     d S r   r1   r   r)   r3   s      r   angular_momentumzBodyBase.angular_momentumX   r5   r   c                     d S r   r1   r9   s      r   parallel_axiszBodyBase.parallel_axis\   r5   r   )NN)r"   
__module____qualname____doc__r   r   r$   propertyr   r   setterr   r   r   r4   r7   r:   r<   r1   r   r   r   r      s       //     E E E   X     X  ! ! !
   X 
[# # [# & & X&$ 1 1 1   ^   ^   ^   ^  r   N)
abcr   r   sympyr   r   sympy.physics.vectorr   __all__r   r1   r   r   <module>rF      s    # # # # # # # # ! ! ! ! ! ! ! ! & & & & & &,V V V V Vs V V V V Vr   