§
    OŠtj,  ã                   óš   — d dl mZmZmZ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mZmZ d dlmZmZ d„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ ZdS )é    )ÚPointÚReferenceFrameÚDyadicÚ	RigidBody)ÚdynamicsymbolsÚouterÚinertiaÚInertia)Úinertia_of_point_mass)ÚexpandÚzerosÚsimplifyÚsymbols)ÚraisesÚwarns_deprecated_sympyc                  ó¢  — t          d¦  «        } t          | j        gt          d¦  «        ¢R Ž }| j        dk    sJ ‚| j        t          d¦  «        k    sJ ‚| j        j        dk    sJ ‚| j        || j        fk    sJ ‚| j        |k    sJ ‚| j        j        dk    sJ ‚|                      ¦   «         dk    sJ ‚|  	                    ¦   «         dk    sJ ‚d S )NÚBz#B_ixx B_iyy B_izz B_ixy B_iyz B_izxÚB_massÚB_masscenterÚB_framea|  RigidBody('B', masscenter=B_masscenter, frame=B_frame, mass=B_mass, inertia=Inertia(dyadic=B_ixx*(B_frame.x|B_frame.x) + B_ixy*(B_frame.x|B_frame.y) + B_izx*(B_frame.x|B_frame.z) + B_ixy*(B_frame.y|B_frame.x) + B_iyy*(B_frame.y|B_frame.y) + B_iyz*(B_frame.y|B_frame.z) + B_izx*(B_frame.z|B_frame.x) + B_iyz*(B_frame.z|B_frame.y) + B_izz*(B_frame.z|B_frame.z), point=B_masscenter)))
r   r	   Úframer   ÚnameÚmassÚ
masscenterÚcentral_inertiaÚ__str__Ú__repr__)ÚbÚIs     új/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/physics/mechanics/tests/test_rigidbody.pyÚtest_rigidbody_defaultr!      s÷   € å�#‰Œ€AÝ�”ÐI�'Ð"GÑHÔHÐIÐIÐI€AØŒ6�SŠ=ˆ=ˆ=ˆ=ØŒ6•W˜XÑ&Ô&Ò&Ð&Ð&Ð&ØŒ<Ô Ò.Ð.Ð.Ð.ØŒ9˜˜AœLÐ)Ò)Ð)Ð)Ð)ØÔ Ò!Ð!Ð!Ð!ØŒ7Œ<˜9Ò$Ð$Ð$Ð$Ø�9Š9‰;Œ;˜#ÒÐÐÐØ�:Š:‰<Œ<ð	ò ð  ð  ð  ð  ð  ó    c                  óˆ  ‡
‡‡‡— t          d¦  «        \  Š} }}}}t          d¦  «        Š
t          d¦  «        }t          d¦  «        Št          d¦  «        }t          d¦  «        Št          d¦  «        }t	          d‰‰
‰‰‰f¦  «        }|j        ‰k    sJ ‚|j        ‰
k    sJ ‚|j        ‰k    sJ ‚|j        ‰|j        fk    sJ ‚| |_        ||_        ||_        ||j        f|_        t          t          ˆ
ˆˆˆfd„¦  «         t          t          ˆˆˆfd	„¦  «         t          t          ˆ
ˆˆfd
„¦  «         t          t          ˆ
ˆˆˆfd„¦  «         |                     ¦   «         dk    sJ ‚|j        | k    sJ ‚|j        |k    sJ ‚|j        |k    sJ ‚|j        ||j        fk    sJ ‚t          |j        t          ¦  «        sJ ‚t          d¦  «        }	|                     |	||	j        z  ||	j        z  z   ||	j        z  z   ¦  «         |                     |	¦  «        | ||	j        z  ||	j        z  z   ||	j        z  z   z  k    sJ ‚d S )Nzm m2 v1 v2 v3 omegaÚAÚA2ÚPÚP2r   r   c                  ó.   •— t          ‰‰‰ ‰‰‰f¦  «        S )N©r   ©r$   r   r&   Úms   €€€€r    ú<lambda>z test_rigidbody.<locals>.<lambda>/   s   ø€ �i¨¨1¨a°°Q¸°FÑ;Ô;€ r"   c                  ó.   •— t          d‰‰‰‰ ‰f¦  «        S ©Nr   r)   )r   r&   r+   s   €€€r    r,   z test_rigidbody.<locals>.<lambda>0   ó   ø€ �i¨¨Q°°1°q¸!°fÑ=Ô=€ r"   c                  ó.   •— t          d‰‰ ‰‰‰f¦  «        S r.   r)   )r$   r&   r+   s   €€€r    r,   z test_rigidbody.<locals>.<lambda>1   r/   r"   c                  ó.   •— t          d‰‰ ‰‰‰f¦  «        S r.   r)   r*   s   €€€€r    r,   z test_rigidbody.<locals>.<lambda>2   r/   r"   ÚN)r   r   r   r   r   r   r   r   r	   r   Ú	TypeErrorr   Ú
isinstancer
   Úset_velÚxÚyÚzÚlinear_momentum)Úm2Úv1Úv2Úv3Úomegar%   r'   ÚI2r   r2   r$   r   r&   r+   s             @@@@r    Útest_rigidbodyr@      su  øøøø€ Ý&Ð'<Ñ=Ô=Ñ€A€rˆ2ˆr�2�uÝ�sÑÔ€AÝ	˜Ñ	Ô	€BÝˆc‰
Œ
€AÝ	ˆt‰Œ€BÝˆq‰	Œ	€AÝ	�‰Œ€BÝ�#�q˜!˜Q  A Ñ'Ô'€AØŒ6�QŠ;ˆ;ˆ;ˆ;ØŒ7�aŠ<ˆ<ˆ<ˆ<ØŒ<˜1ÒÐÐÐØŒ9˜˜AœLÐ)Ò)Ð)Ð)Ð)à€A„FØ€A„GØ€A„LØ�Q”\Ð"€A„IÝ
�9Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ñ<Ô<Ð<Ý
�9Ð=Ð=Ð=Ð=Ð=Ð=Ñ>Ô>Ð>Ý
�9Ð=Ð=Ð=Ð=Ð=Ð=Ñ>Ô>Ð>Ý
�9Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ñ>Ô>Ð>Ø�9Š9‰;Œ;˜#ÒÐÐÐØŒ6�RŠ<ˆ<ˆ<ˆ<ØŒ7�bŠ=ˆ=ˆ=ˆ=ØŒ<˜2ÒÐÐÐØŒ9˜˜Qœ\Ð*Ò*Ð*Ð*Ð*Ý�a”i¥Ñ)Ô)Ð)Ð)Ð)õ 	�sÑÔ€AØ‡J‚Jˆq�"�q”s‘(˜R !¤#™XÑ%¨¨Q¬S©Ñ0Ñ1Ô1Ð1Ø×Ò˜QÑÔ 2¨¨a¬c©°B¸¼±HÑ)<¸rÀAÄC¹xÑ)GÑ#HÒHÐHÐHÐHÐHÐHr"   c                  ó\  — t          d¦  «        \  } }}}}}t          d¦  «        }t          d¦  «        }|                     |||j        z  ¦  «         t	          d¦  «        }t          |j        |j        ¦  «        }	|	|f}
t          d||| |
¦  «        }|                     |||j        z  ¦  «         |                     ||¦  «        ||j        z  k    sJ ‚t	          d¦  «        }|                     |||j        z  ¦  «         | 	                    |||j
        z  ¦  «         |                     ||¦  «        ||j        z  | |z  |z  |j        z  z
  k    sJ ‚| |z  |z  |_        |j        | |z  |z  k    sJ ‚t          d|                     |¦  «        z  ¦  «        |dz  | |dz  z  z   k    sJ ‚d S )NzM v r omega g hr2   r   r&   r   ÚOé   )r   r   Úset_ang_velr6   r   r   r   r5   Úangular_momentumÚset_posr7   r8   Úpotential_energyr   Úkinetic_energy)ÚMÚvÚrr>   ÚgÚhr2   r   r&   r   ÚInertia_tupler   rB   s                r    Útest_rigidbody2rO   @   s´  € Ý)Ð*;Ñ<Ô<Ñ€A€qˆ!ˆU�A�qÝ�sÑÔ€AÝ�sÑÔ€AØ‡M‚M�!�U˜QœS‘[Ñ!Ô!Ð!Ýˆc‰
Œ
€AÝˆaŒc�1”3‰Œ€AØ˜�F€MÝ�#�q˜!˜Q Ñ.Ô.€AØ‡I‚Iˆa��Q”S‘ÑÔÐØ×Ò˜a Ñ#Ô# u¨q¬s¡{Ò2Ð2Ð2Ð2Ýˆc‰
Œ
€AØ‡I‚Iˆa��Q”S‘ÑÔÐØ‡I‚Iˆa��Q”S‘ÑÔÐØ×Ò˜a Ñ#Ô# u¨q¬s¡{°Q°q±S¸±U¸1¼3±YÑ'>Ò>Ð>Ð>Ð>Ø˜Q™ ™€AÔØÔ  Q¡¨¡Ò*Ð*Ð*Ð*Ý�!�a×&Ò& qÑ)Ô)Ñ)Ñ*Ô*¨e°Q©h¸¸QÀ¹T¹Ñ.AÒAÐAÐAÐAÐAÐAr"   c                  ó>  — t          d¦  «        \  } }}}t          d¦  «        \  }}}t          d¦  «        }t          d¦  «        }|                     dd| |j        g¦  «        }	t          d¦  «        }
|
                     |||j        z  ||j        z  z   ||j        z  z   ¦  «         |
 	                    d||	j        z  ||	j        z  z   ||	j        z  z   ¦  «        }| 
                    |
||	¦  «         t          |	j        |	j        ¦  «        }t          d	||	|||f¦  «        }t          d
||	||t          ||                     |
¦  «        |	¦  «        z   |
f¦  «        }|j        |j        k    sJ ‚|                     |
|¦  «        |                     |
|¦  «        k    sJ ‚d S )Nzq1:5zp1:4r+   r$   r   ÚaxisrB   r&   Úrb1Úrb2)r   r   r   Ú	orientnewr6   r   r5   r7   r8   Ú	locatenewÚv2pt_theoryr   r   r   Úpos_fromr   rE   )Úq1Úq2Úq3Úq4Úp1Úp2Úp3r+   r$   r   rB   r&   r   rR   rS   s                  r    Útest_rigidbody3r_   T   s�  € Ý# FÑ+Ô+�N€BˆˆB�Ý˜‘”�J€BˆˆBÝ�‰Œ€Aå�sÑÔ€AØ	�Š�C˜ " a¤c Ñ+Ô+€AÝˆc‰
Œ
€AØ‡I‚Iˆa��A”C‘˜"˜QœS™&‘ 2 a¤c¡6Ñ)Ñ*Ô*Ð*Ø	�Š�C˜˜AœC™ " Q¤S¡&™¨2¨a¬c©6Ñ1Ñ2Ô2€AØ‡M‚M�!�Q˜ÑÔÐÝˆaŒc�1”3‰Œ€Aå
�E˜1˜a  Q¨ FÑ
+Ô
+€Cå
�E˜1˜a ØÕ.¨q°!·*²*¸Q±-´-ÀÑCÔCÑCÀQÐGñIô I€Cð Ô #Ô"5Ò5Ð5Ð5Ð5Ø×Ò  1Ñ%Ô%¨×)=Ò)=¸aÀÑ)CÔ)CÒCÐCÐCÐCÐCÐCr"   c                  óN  — t          d¦  «        \  } }t          d¦  «        }t          d¦  «        }|                     dd||j        g¦  «        }|                     ||                     ¦   «         |j        z  ¦  «         t          |d| |dz  z  dz  | |dz  z  dz  ¦  «        }t          d	¦  «        }| 	                    d
d|z  |j
        z  ¦  «        }| 	                    d||j
        z  ¦  «        }t          d||| ||f¦  «        }	|                     |d¦  «         |                     |||¦  «         |                     |||¦  «         d| z  |dz  z  dz  |                     ¦   «         z  |j        z  |	                     ||¦  «                             |¦  «        z
  dk    sJ ‚dS )zòConsider a pendulum of length OA = 2a, of mass m as a rigid body of
    center of mass G (OG = a) which turn around (O,z). The angle between the
    reference frame R and the rod is q.  The inertia of the body is I =
    (G,0,ma^2/3,ma^2/3). zm, aÚqÚRÚR1ÚAxisr   rC   é   rB   r$   ÚGÚSé   N)r   r   r   rT   r8   rD   Údiffr	   r   rU   r6   r   r5   rV   rE   Úexpress)
r+   Úara   rb   rc   r   rB   r$   rf   rg   s
             r    Útest_pendulum_angular_momentumrl   j   s›  € õ �6‰?Œ?�D€A€qÝ�sÑÔ€Aå�sÑÔ€AØ	
�Š�T˜6 A q¤s 8Ñ	,Ô	,€BØ‡N‚N�1�a—f’f‘h”h ¤‘nÑ%Ô%Ð%å��A�q˜1˜a™4‘x !‘| Q¨¨A©¡X°¡\Ñ2Ô2€Aåˆc‰
Œ
€Aà	�Š�C˜˜1™˜rœt™Ñ$Ô$€AØ	�Š�C˜˜RœT™Ñ"Ô"€Aå�#�q˜"˜a ! Q Ñ(Ô(€Aà‡I‚Iˆa��O„O€OØ‡M‚M�!�Q˜ÑÔÐØ‡M‚M�!�Q˜ÑÔÐà�‰E�A�q‘D‰L˜1Ñ˜qŸvšv™xœxÑ'¨!¬#Ñ-Ø×Ò˜q !Ñ$Ô$×,Ò,¨QÑ/Ô/ñ0Ø45ò6ð 6ð 6ð 6ð 6ð 6r"   c            
      óÊ  — t          d¦  «        } t          d¦  «        \  }}}}}}t          | |||¦  «        }t          d¦  «        }|                     d|| j        z  || j        z  z   ¦  «        }	t          d|| |||	f¦  «        }
t          | ||dz  |z  z
  ||dz  |z  z
  |||dz  |dz  z   z  z
  ||z  |z  ¦  «        }t          |
j        t          ¦  «        sJ ‚|
j        ||	fk    sJ ‚|
j
        |k    sJ ‚||
_
        |
j        ||fk    sJ ‚|
j
        |k    sJ ‚||	f|
_        |
j        ||	fk    sJ ‚|
j
        |k    sJ ‚t          ||¦  «        |
_        |
j        ||fk    sJ ‚d S )Nr2   úm, I_x, I_y, I_z, a, bÚoÚprb   rC   )r   r   r	   r   rU   r6   r7   r   r4   r
   r   )r2   r+   ÚIxÚIyÚIzrk   r   ÚIoro   rp   rb   ÚI_checks               r    Útest_rigidbody_inertiarv   ˆ   s­  € Ý�sÑÔ€AÝ!Ð":Ñ;Ô;Ñ€A€rˆ2ˆr�1�aÝ	��B˜˜BÑ	Ô	€BÝˆc‰
Œ
€AØ	�Š�C˜˜QœS™ 1 q¤s¡7Ñ*Ñ+Ô+€AÝ�#�q˜!˜Q  Q Ñ(Ô(€AÝ�a˜˜a 1™f q™j™¨"¨q°A©v¸©z©/Ø˜1  Q¡¨¨a©¡Ñ0Ñ0°!°a±%¸!±)ñ=ô =€Gå�a”i¥Ñ)Ô)Ð)Ð)Ð)ØŒ9˜˜Q˜ÒÐÐÐØÔ Ò'Ð'Ð'Ð'Ø€AÔØŒ9˜˜Q˜ÒÐÐÐØÔ Ò"Ð"Ð"Ð"Ø�Q�€A„IØŒ9˜˜Q˜ÒÐÐÐØÔ Ò'Ð'Ð'Ð'å˜˜A‘”€A„IØŒ9˜˜Q˜ÒÐÐÐÐÐr"   c            
      ó°  — t          d¦  «        } t          d¦  «        \  }}}}}}t          | |||¦  «        }t          d¦  «        }|                     d|| j        z  || j        z  z   ¦  «        }	t          d|| |||f¦  «        }
|
                     |	¦  «        }t          | |||dz  z  z   |||dz  z  z   |||dz  |dz  z   z  z   | |z  |z  ¬¦  «        }||k    sJ ‚t          d¦  «        }| 	                    | | j
        d	¦  «         t          |
                     |	|¦  «        |z
                       |¦  «        ¦  «        t          d
d
¦  «        k    sJ ‚d S )Nr2   rn   ro   rp   rb   rC   )Úixyr$   é   re   )r   r   r	   r   rU   r6   r7   r   Úparallel_axisÚorient_axisr8   r   Ú	to_matrixr   )r2   r+   rq   rr   rs   rk   r   rt   ro   rp   rb   ÚIpÚIp_expectedr$   s                 r    Útest_parallel_axisr   Ÿ   s†  € Ý�sÑÔ€AÝ!Ð":Ñ;Ô;Ñ€A€rˆ2ˆr�1�aÝ	��B˜˜BÑ	Ô	€BÝˆc‰
Œ
€AØ	�Š�C˜˜QœS™ 1 q¤s¡7Ñ*Ñ+Ô+€AÝ�#�q˜!˜Q  Q Ñ(Ô(€AØ	
�Š˜Ñ	Ô	€BÝ˜!˜R ! a¨¡d¡(™]¨B°°Q¸±T±©MØ˜q A q¡D¨1¨a©4¡KÑ0Ñ0°q°b¸1±f¸q±jðBñ Bô B€Kà�ÒÐÐÐå�sÑÔ€AØ‡M‚M�!�Q”S˜!ÑÔÐÝØ	
�Š˜˜AÑ	Ô	 Ñ	,×7Ò7¸Ñ:Ô:ñ<ô <Ý?DÀQÈ¹{¼{òKð Kð Kð Kð Kð Kr"   c                  ó4  — t          d¦  «        \  } }}t          d¦  «        }t          d¦  «        }t          d¦  «        }t	          d||| ||f¦  «        }t          ¦   «         5  |                     | |z  |z  ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nzm g hr$   r&   r   r   )r   r   r   r   r   r   Úset_potential_energy)r+   rL   rM   r$   r&   r   r   s          r    Ú$test_deprecated_set_potential_energyr‚   ±   sÝ   € Ý�gÑÔ�G€A€qˆ!Ý�sÑÔ€AÝˆc‰
Œ
€AÝˆq‰	Œ	€AÝ�#�q˜!˜Q  A Ñ'Ô'€AÝ	Ñ	!Ô	!ð &ð &Ø	×Ò˜q ™s 1™uÑ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð &ð &s   Á$BÂBÂBN)Úsympy.physics.mechanicsr   r   r   r   r   r   r	   r
   r   Úsympyr   r   r   r   Úsympy.testing.pytestr   r   r!   r@   rO   r_   rl   rv   r   r‚   © r"   r    ú<module>r‡      s*  ðØ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?ð ð  ð  ð* Ið  Ið  IðFBð Bð Bð(Dð Dð Dð,6ð 6ð 6ð< ð  ð  ð.Kð Kð Kð$&ð &ð &ð &ð &r"   