U
    L?h
                     @   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st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   \/var/www/html/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st||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st
 jkst
 jkst
 d kst
 d kst
 fkst
tt fdd  tkst
 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
   