ó
¡¼™\c           @   sŒ   d  d l  m Z m Z d  d l m Z m Z d  d l m Z m Z d  d l	 m
 Z
 d „  Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d S(   iÿÿÿÿ(   t   Symbolt   symbols(   t   Pointt   ReferenceFrame(   t   inertiat   Body(   t   raisesc    
   	   C   s  t  d ƒ }  |  j d k s! t ‚ |  j g  k s6 t ‚ t d ƒ } | j |  j d ƒ |  j } |  j } | j | ƒ | j | ƒ k s‹ t ‚ |  j	 t
 d ƒ k s¦ t ‚ t d ƒ \ } } } t d ƒ \ } } }	 |  j t |  j | | | | | |	 ƒ |  j f k s	t ‚ d  S(   Nt   bodyt   body_masscenteri    t	   body_masss   body_ixx body_iyy body_izzs   body_ixy body_iyz body_izx(   R   t   namet   AssertionErrort   loadsR   t   set_velt   framet
   masscentert   velt   massR    R   R   (
   R   t   pointt   comR   t   ixxt   iyyt   izzt   ixyt   iyzt   izx(    (    sF   lib/python2.7/site-packages/sympy/physics/mechanics/tests/test_body.pyt   test_default   s    		$$c          C   sC  t  d ƒ }  t d ƒ } t d ƒ } t | d d d ƒ } t d |  | | | ƒ } | j } | j } |  j | d ƒ | j | ƒ |  j | ƒ k s— t	 ‚ | j
 | ƒ |  j
 | ƒ k s» t	 ‚ | j | k sÐ t	 ‚ | j | |  f k së t	 ‚ t | d ƒ s t	 ‚ t | d ƒ st	 ‚ t | d	 ƒ s*t	 ‚ t | d
 ƒ s?t	 ‚ d  S(   Nt   rigidbody_masscentert   rigidbody_masst   rigidbody_framei   i    t   rigidbody_bodyR   R   R   R   (   R   R    R   R   R   R   R   R   R   R   t   pos_fromR   t   hasattr(   R   R   R   t   body_inertiat
   rigid_bodyR   R   (    (    sF   lib/python2.7/site-packages/sympy/physics/mechanics/tests/test_body.pyt   test_custom_rigid_body   s"    		$$c          C   s  t  d ƒ }  t d ƒ } t d ƒ } t d |  | | ƒ } | j } | j } |  j | d ƒ | j | ƒ |  j | ƒ k s t ‚ | j	 | ƒ |  j	 | ƒ k s£ t ‚ | j
 | k s¸ t ‚ t | d ƒ sÎ t ‚ t | d ƒ sã t ‚ t | d ƒ sø t ‚ t | d	 ƒ st ‚ d  S(
   Nt   particle_masscentert   particle_masst   particle_framet   particle_bodyi    t   _inertiaR   R   R   (   R   R    R   R   R   R   R   R   R   R   R   R    (   R$   R%   R&   R'   R   R   (    (    sF   lib/python2.7/site-packages/sympy/physics/mechanics/tests/test_body.pyt   test_particle_body-   s    			$$c    	      C   s5  t  d ƒ }  t d ƒ } t d ƒ } t d |  | | ƒ } t d ƒ } | | j j } | j | | j ƒ t | j	 ƒ d k sƒ t
 ‚ | j j | j d d ƒ } | j | j d ƒ | j	 d d } | j } | j | ƒ | j | ƒ k sð t
 ‚ | j | ƒ | j | ƒ k st
 ‚ | j	 d d | k s1t
 ‚ d  S(	   NR$   R%   R&   R'   t   ai   t   _point0i    (   R   R    R   R   R   t   xt   apply_forceR   t   lenR   R   t	   locatenewt   _nameR   R   R   (	   R$   R%   R&   R'   R*   t   force_vectorR   t   force_pointR   (    (    sF   lib/python2.7/site-packages/sympy/physics/mechanics/tests/test_body.pyt   test_particle_body_add_forceA   s"    			$$c    	         sÍ  t  d ƒ }  t d ƒ } t d ƒ } t | d d d ƒ } t d |  | | | ƒ ‰ t d ƒ } t d ƒ } ˆ j j d	 | ˆ j j ƒ } | j	 ˆ j d ƒ | ˆ j j
 ‰  ˆ j ˆ  | ƒ t ˆ j ƒ d k sÖ t ‚ ˆ j d d } ˆ j } | j | ƒ | j | ƒ k st ‚ | j | ƒ | j | ƒ k s8t ‚ ˆ j d d ˆ  k sUt ‚ ˆ j ˆ  ƒ t ˆ j ƒ d
 k s}t ‚ ˆ j d d ˆ  k sšt ‚ t t ‡  ‡ f d †  ƒ t t ‡ f d †  ƒ d  S(   NR   R   R   i   i    R   t   lt   Fat   rigidbody_body_point0i   c              s   ˆ j  ˆ  d ƒ S(   Ni    (   R-   (    (   R1   R"   (    sF   lib/python2.7/site-packages/sympy/physics/mechanics/tests/test_body.pyt   <lambda>v   t    c              s   ˆ  j  d ƒ S(   Ni    (   R-   (    (   R"   (    sF   lib/python2.7/site-packages/sympy/physics/mechanics/tests/test_body.pyR7   w   R8   (   R   R    R   R   R   R   R/   R   R,   R   t   zR-   R.   R   R   R   R   R   t	   TypeError(	   R   R   R   R!   R4   R5   R   R2   R   (    (   R1   R"   sF   lib/python2.7/site-packages/sympy/physics/mechanics/tests/test_body.pyt   test_body_add_forceY   s2    		$$c             s|   t  d ƒ ‰  ˆ  j j }  ˆ  j |  ƒ t ˆ  j ƒ d k s@ t ‚ ˆ  j d ˆ  j |  f k sb t ‚ t t ‡  f d †  ƒ d  S(   NR   i   i    c              s   ˆ  j  d ƒ S(   Ni    (   t   apply_torque(    (   R   (    sF   lib/python2.7/site-packages/sympy/physics/mechanics/tests/test_body.pyR7   €   R8   (	   R   R   R,   R<   R.   R   R   R   R:   (   t   torque_vector(    (   R   sF   lib/python2.7/site-packages/sympy/physics/mechanics/tests/test_body.pyt   test_body_add_torquey   s    "N(   t   sympy.core.backendR    R   t   sympy.physics.vectorR   R   t   sympy.physics.mechanicsR   R   t   sympy.utilities.pytestR   R   R#   R)   R3   R;   R>   (    (    (    sF   lib/python2.7/site-packages/sympy/physics/mechanics/tests/test_body.pyt   <module>   s   					 