o
    gz
                     @   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J  jtdksJ  jjdksJ  jdks#J   dks+J   dks3J tt	 fdd d S )NPP_massP_masscenterr   z3Particle('P', masscenter=P_masscenter, mass=P_mass)c                      s    j S N)frame pr   b/var/www/visachat/venv/lib/python3.10/site-packages/sympy/physics/mechanics/tests/test_particle.py<lambda>   s    z'test_particle_default.<locals>.<lambda>)
r   namemassr   
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s!J |jks(J |j ks/J | |_|j| ks9J ||_|j|ksCJ td}	td}
||
||	j	  |
|	||	j  tt fdd ttfd	d ||	| | |	j ks~J ||
|	|  | | |	j ksJ |
|	||	j	  ||	| | |	j	 ksJ ||
|	d
ksJ |
|	||	j  ||	| | |	j ksJ ||
|	| | | |	j ksJ |
|	||	j ||	j	  ||	j   ||	| ||	j ||	j	  ||	j   ksJ ||
|	| | ||	j ||	j   ksJ | | |_|j| | ks/J ||	| |d |d  |d   d | |d  d | |d  d  | |d  d  fv s_J 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   (       ztest_particle.<locals>.<lambda>c                      s   t d  S )Nr   r    r   )r"   r   r   r   )   r#   r      )r   r   r   
isinstancer   r   pointr   set_posyset_velxr   	TypeErrorlinear_momentumangular_momentumzr   kinetic_energy)m2v1v2v3rghr   r   r   r   r   r!   r   test_particle   sJ   $"&2..r7   c            	      C   s   t d} td\}}}td}|d|| j || j  }td||}||| }t| ||d  ||d  ||d |d   | | | d}||ksMJ d S )Nr   zm, a, bor   r
   r$   )ixy)	r   r   r   	locatenewr*   r(   r   parallel_axisr   )	r   r"   abr8   r   r
   IpIp_expectedr   r   r   test_parallel_axis=   s   *r@   c                  C   s`   t d\} }}td}td|| }t  || | |  W d    d S 1 s)w   Y  d S )Nzm g hr
   r   )r   r   r   r	   set_potential_energy)r"   r5   r6   r
   r   r   r   r   $test_deprecated_set_potential_energyI   s   "rB   N)sympyr   sympy.physics.mechanicsr   r   r   r   !sympy.physics.mechanics.body_baser   sympy.testing.pytestr   r	   r   r7   r@   rB   r   r   r   r   <module>   s    )