U
    ZÊ¹j¦
  ã                   @   sP   d dl mZ d dlmZ d dlmZmZmZmZm	Z	 dd„ Z
dd„ Zdd	„ Zd
S )é    )Úsymbols)Úraises)ÚinertiaÚinertia_of_point_massÚInertiaÚReferenceFrameÚPointc                  C   sD  t dƒ} tdƒ\}}}tdƒ\}}}t| |||ƒ|| j| jB  || j| jB   || j| jB   ksft‚t| dddƒd| j| jB  ksˆt‚ttdd„ ƒ t| ||||||ƒ|| j| jB  || j| jB   || j| jB   || j| jB   || j| jB   || j| jB   || j| jB   || j| jB   || j| jB   k�s@t‚d S )NÚNúixx iyy izzzixy iyz izxr   c                   S   s   t ddddƒS )Nr   )r   © r   r   úi/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/physics/mechanics/tests/test_inertia.pyÚ<lambda>   ó    z%test_inertia_dyadic.<locals>.<lambda>)	r   r   r   ÚxÚyÚzÚAssertionErrorr   Ú	TypeError)r	   ÚixxÚiyyÚizzZixyZiyzZizxr   r   r   Útest_inertia_dyadic   s>    
ÿÿ
" ÿÿÿ
ÿÿþþÿþýr   c            
      C   s  t dƒ\} }}}tdƒ}| |j }t|||ƒ}||| d  |j|jB  || d  |j|jB   ksft‚||j }t|||ƒ}|||d  |j|jB  ||d  |j|jB   ks´t‚||j }t|||ƒ}|||d  |j|jB  ||d  |j|jB   k�st‚|| | }	t||	|ƒ}|||d |d   |j|jB  ||  | |j|jB   ||  | |j|jB   ||  | |j|jB   || d |d   |j|jB   || | |j|jB   ||  | |j|jB   || | |j|jB   || d |d   |j|jB   k�st‚d S )Nzr s t mr	   é   )r   r   r   r   r   r   r   )
ÚrÚsÚtÚmr	   ZpxÚIÚpyZpzÚpr   r   r   Útest_inertia_of_point_mass   s<    
8
8
: ÿþýüûúùør    c                     s\  t dƒ} tdƒ‰tdƒ\}}}|| j| jB  || j| jB   || j| jB   ‰tt| |||ƒˆƒ‰ tˆ t	ƒspt
‚ˆ  ¡ dks€t
‚ˆ jˆksŽt
‚ˆ jˆksœt
‚ˆ d ˆks¬t
‚ˆ d ˆks¼t
‚ˆ ˆˆfksÌt
‚tt‡ ‡‡fdd„ƒ ˆ tˆˆƒksôt
‚ˆ t ˆ| |||¡k�st
‚tt‡ fd	d„ƒ tt‡ fd
d„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ d S )Nr	   ÚOr
   zFInertia(dyadic=ixx*(N.x|N.x) + iyy*(N.y|N.y) + izz*(N.z|N.z), point=O)r   é   c                      s   ˆ ˆˆfkS )Nr   r   ©r   ZI_dyadicr!   r   r   r   @   r   z%test_inertia_object.<locals>.<lambda>c                      s   ˆ d S ©N)r"   r   r   r   ©r   r   r   r   D   r   c                      s   dˆ  S r$   r   r   r%   r   r   r   E   r   c                      s   ˆ d S ©Nr   r   r   r%   r   r   r   F   r   c                      s   dˆ  S r&   r   r   r%   r   r   r   G   r   )r   r   r   r   r   r   r   r   Ú
isinstanceÚtupler   Ú__repr__ZdyadicÚpointr   r   Zfrom_inertia_scalars)r	   r   r   r   r   r#   r   Útest_inertia_object2   s&    0r+   N)Zsympyr   Zsympy.testing.pytestr   Zsympy.physics.mechanicsr   r   r   r   r   r   r    r+   r   r   r   r   Ú<module>   s
   