U
    ZÊ¹jz
  ã                   @   sd   d dl mZ d dlmZmZmZmZ d dlmZ d dl	m
Z
mZ dd„ Zdd„ Zd	d
„ Zdd„ ZdS )é    )Úsymbols)ÚPointÚParticleÚReferenceFrameÚinertia)ÚBodyBase)ÚraisesÚwarns_deprecated_sympyc                      s|   t dƒ‰ ˆ jdkst‚ˆ jtdƒks(t‚ˆ jjdks8t‚ˆ jdksFt‚ˆ  ¡ dksVt‚ˆ  ¡ dksft‚t	t
‡ fdd„ƒ d S )NÚPZP_massZP_masscenterr   z3Particle('P', masscenter=P_masscenter, mass=P_mass)c                      s   ˆ j S ©N)Úframe© ©Úpr   új/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/physics/mechanics/tests/test_particle.pyÚ<lambda>   ó    z'test_particle_default.<locals>.<lambda>)r   ÚnameÚAssertionErrorÚmassr   Z
masscenterÚpotential_energyÚ__str__Ú__repr__r   ÚAttributeErrorr   r   r   r   Útest_particle_default   s    r   c                     sÌ  t dƒ\‰} }}}}}}tdƒ‰ tdƒ}tdˆ ˆƒ}t|tƒsBt‚|jˆksPt‚|jˆ ks^t‚| |_|j| ksrt‚||_|j|ks†t‚tdƒ}	tdƒ}
| 	|
||	j
 ¡ | |	||	j ¡ tt‡ ‡fdd„ƒ tt‡fd	d„ƒ | |	¡| | |	j ksüt‚| |
|	¡|  | | |	j k�s"t‚| |	||	j
 ¡ | |	¡| | |	j
 k�sRt‚| |
|	¡d
k�sht‚| |	||	j ¡ | |	¡| | |	j k�s˜t‚| |
|	¡| | | |	j k�s¼t‚| |	||	j ||	j
  ||	j  ¡ | |	¡| ||	j ||	j
  ||	j   k�st‚| |
|	¡| | ||	j ||	j   k�sBt‚ˆ| | |_|jˆ| | k�sht‚| |	¡| |d |d  |d   d | |d  d | |d  d  | |d  d  fk�sÈt‚d S )Nzm m2 v1 v2 v3 r g hr
   ÚP2ÚpaÚNÚOc                      s   t ˆ ˆ ˆƒS r   ©r   r   ©r
   Úmr   r   r   (   r   ztest_particle.<locals>.<lambda>c                      s   t dˆ ˆ ƒS )Nr   r   r   )r!   r   r   r   )   r   r   é   )r   r   r   Ú
isinstancer   r   r   Úpointr   Zset_posÚyZset_velÚxr   Ú	TypeErrorZlinear_momentumZangular_momentumÚzr   Zkinetic_energy)Úm2Zv1Zv2Zv3ÚrÚgÚhr   r   r   r   r   r    r   Útest_particle   sJ    &$&2.ÿ.ÿÿr-   c            	      C   sž   t dƒ} tdƒ\}}}tdƒ}| d|| j || j  ¡}td||ƒ}| || ¡}t| ||d  ||d  ||d |d   | | | d�}||ksšt	‚d S )Nr   zm, a, bÚor   r
   r"   )Zixy)
r   r   r   Z	locatenewr&   r%   r   Zparallel_axisr   r   )	r   r!   ÚaÚbr.   r   r
   ZIpZIp_expectedr   r   r   Útest_parallel_axis=   s    *ÿr1   c               	   C   sJ   t dƒ\} }}tdƒ}td|| ƒ}tƒ � | | | | ¡ W 5 Q R X d S )Nzm g hr
   r   )r   r   r   r	   Zset_potential_energy)r!   r+   r,   r
   r   r   r   r   Ú$test_deprecated_set_potential_energyI   s
    r2   N)Zsympyr   Zsympy.physics.mechanicsr   r   r   r   Z!sympy.physics.mechanics.body_baser   Zsympy.testing.pytestr   r	   r   r-   r1   r2   r   r   r   r   Ú<module>   s   )