U
    ZÊ¹j»	  ã                   @   sF   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„ deƒZ	dS )é    )ÚABCÚabstractmethod)ÚSymbolÚsympify)ÚPointÚBodyBasec                   @   s´   e Zd ZdZddd„Zdd„ Zdd„ Zed	d
„ ƒZedd„ ƒZ	e	j
dd„ ƒZ	edd„ ƒZej
dd„ ƒZedd„ ƒZej
dd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZdS )r   z%Abstract class for body type objects.Nc                 C   s`   t |tƒstdƒ‚|| _|d kr.t|› d�ƒ}|d krDt|› d�ƒ}|| _|| _d| _g | _	d S )NzSupply a valid name.Ú_massÚ_masscenterr   )
Ú
isinstanceÚstrÚ	TypeErrorÚ_namer   r   ÚmassÚ
masscenterÚpotential_energyZpoints)ÚselfÚnamer   r   © r   ú`/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/physics/mechanics/body_base.pyÚ__init__
   s    
zBodyBase.__init__c                 C   s   | j S ©N)r   ©r   r   r   r   Ú__str__   s    zBodyBase.__str__c                 C   s2   | j j› dt| jƒ› dt| jƒ› dt| jƒ› d�S )Nú(z, masscenter=z, mass=ú))Ú	__class__Ú__name__Úreprr   r   r   r   r   r   r   Ú__repr__   s    zBodyBase.__repr__c                 C   s   | j S )zThe name of the body.)r   r   r   r   r   r       s    zBodyBase.namec                 C   s   | j S )zThe body's center of mass.)r	   r   r   r   r   r   %   s    zBodyBase.masscenterc                 C   s   t |tƒstdƒ‚|| _d S )Nz1The body's center of mass must be a Point object.)r
   r   r   r	   )r   Úpointr   r   r   r   *   s    
c                 C   s   | j S )zThe body's mass.)r   r   r   r   r   r   0   s    zBodyBase.massc                 C   s   t |ƒ| _d S r   )r   r   )r   r   r   r   r   r   5   s    c                 C   s   | 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   r   r   r   r   9   s    zBodyBase.potential_energyc                 C   s   t |ƒ| _d S r   )r   r    )r   Zscalarr   r   r   r   L   s    c                 C   s   d S r   r   ©r   Úframer   r   r   Úkinetic_energyP   s    zBodyBase.kinetic_energyc                 C   s   d S r   r   r!   r   r   r   Úlinear_momentumT   s    zBodyBase.linear_momentumc                 C   s   d S r   r   ©r   r   r"   r   r   r   Úangular_momentumX   s    zBodyBase.angular_momentumc                 C   s   d S r   r   r%   r   r   r   Úparallel_axis\   s    zBodyBase.parallel_axis)NN)r   Ú
__module__Ú__qualname__Ú__doc__r   r   r   Úpropertyr   r   Úsetterr   r   r   r#   r$   r&   r'   r   r   r   r   r      s4   










N)
Úabcr   r   Zsympyr   r   Zsympy.physics.vectorr   Ú__all__r   r   r   r   r   Ú<module>   s   