
    \h,                         S SK JrJrJrJr  S SK JrJrJrJr  S SK J	r	  S SK
JrJrJrJr  S SKJrJr  S rS rS rS	 rS
 rS rS rS rg)    )PointReferenceFrameDyadic	RigidBody)dynamicsymbolsouterinertiaInertia)inertia_of_point_mass)expandzerossimplifysymbols)raiseswarns_deprecated_sympyc                     [        S5      n [        U R                  /[        S5      Q76 nU R                  S:X  d   eU R
                  [        S5      :X  d   eU R                  R                  S:X  d   eU R                  XR                  4:X  d   eU R                  U:X  d   eU R                  R                  S:X  d   eU R                  5       S:X  d   eU R                  5       S:X  d   eg )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     d/var/www/auris/envauris/lib/python3.13/site-packages/sympy/physics/mechanics/tests/test_rigidbody.pytest_rigidbody_defaultr!      s    #AI'"GHIA66S==66WX&&&&<<...99LL))))!!!77<<9$$$99;#::<	         c                    ^
^^^ [        S5      u  mpp#n[        S5      m
[        S5      n[        S5      m[        S5      n[        S5      m[        S5      n[	        STT
TTT45      nUR
                  T:X  d   eUR                  T
:X  d   eUR                  T:X  d   eUR                  TUR                  4:X  d   eXl        XXl        Xhl        XxR                  4Ul        [        [        U
UUU4S j5        [        [        UUU4S	 j5        [        [        U
UU4S
 j5        [        [        U
UUU4S j5        UR                  5       S:X  d   eUR
                  U :X  d   eUR                  U:X  d   eUR                  U:X  d   eUR                  XxR                  4:X  d   e[        UR                  [        5      (       d   e[        S5      n	UR                  XU	R                  -  X)R                   -  -   X9R"                  -  -   5        UR%                  U	5      XU	R                  -  X)R                   -  -   X9R"                  -  -   -  :X  d   eg )Nzm m2 v1 v2 v3 omegaAA2PP2r   r   c                  &   > [        TTT TTT45      $ )Nr   r$   r   r&   ms   r    <lambda> test_rigidbody.<locals>.<lambda>/   s    i1aQF;r"   c                  &   > [        STTTT T45      $ Nr   r)   )r   r&   r+   s   r    r,   r-   0       iQ1q!f=r"   c                  &   > [        STT TTT45      $ r/   r)   )r$   r&   r+   s   r    r,   r-   1   r0   r"   c                  &   > [        STT TTT45      $ r/   r)   r*   s   r    r,   r-   2   r0   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   r3   r$   r   r&   r+   s             @@@@r    test_rigidbodyrA      s   &'<=ArrusA		Bc
A	tBq	A	B#q!QA'A66Q;;77a<<<<199ALL))))FGL\\"AI
9;<
9=>
9=>
9=>99;#66R<<77b==<<299\\****aii)))) 	sAJJqqss(R##X%SS01Q2accBH)<rCCx)G#HHHHr"   c                  "   [        S5      u  pp#pE[        S5      n[        S5      nUR                  XcUR                  -  5        [	        S5      n[        UR                  UR                  5      n	X4n
[        SXX
5      nUR                  XaUR                  -  5        UR                  X5      X7R                  -  :X  d   e[	        S5      nUR                  XaUR                  -  5        UR                  XUR                  -  5        UR                  X5      X7R                  -  X-  U-  UR                  -  -
  :X  d   eX-  U-  Ul        UR                  X-  U-  :X  d   e[        SUR                  U5      -  5      US-  XS-  -  -   :X  d   eg )NzM v r omega g hr3   r   r&   r   O   )r   r   set_ang_velr7   r   r   r   r6   angular_momentumset_posr8   r9   potential_energyr   kinetic_energy)Mvrr?   ghr3   r   r&   r   Inertia_tupler   rC   s                r    test_rigidbody2rP   @   s]   )*;<A!AsAsAMM!QSS[!c
Aacc133AFM#qQ.AIIaQSSa#uss{222c
AIIaQSSIIaQSSa#uss{QSU133Y'>>>>A***!a&&q))*eQhT.AAAAr"   c                     [        S5      u  pp#[        S5      u  pEn[        S5      n[        S5      nUR                  SSXR                  /5      n	[        S5      n
U
R                  XUR                  -  X(R                  -  -   X8R                  -  -   5        U
R                  SXIR                  -  XYR                  -  -   XiR                  -  -   5      nUR                  XU	5        [        U	R                  U	R                  5      n[        S	XX|U45      n[        S
XUU[        X{R                  U
5      U	5      -   U
45      nUR                  UR                  :X  d   eUR!                  X5      UR!                  X5      :X  d   eg )Nzq1:5zp1:4r+   r$   r   axisrC   r&   rb1rb2)r   r   r   	orientnewr7   r   r6   r8   r9   	locatenewv2pt_theoryr   r   r   pos_fromr   rF   )q1q2q3q4p1p2p3r+   r$   r   rC   r&   r   rS   rT   s                  r    test_rigidbody3r`   T   sF   #F+NBBJBBAsA	C"cc+Ac
AIIaACC"SS&2cc6)*	CCC"SS&2cc612AMM!acc133A
E1F
+C
E1.q**Q-CCQGIC #"5"5555%)=)=a)CCCCr"   c                     [        S5      u  p[        S5      n[        S5      nUR                  SSX#R                  /5      nUR                  X2R                  5       UR                  -  5        [        USXS-  -  S-  XS-  -  S-  5      n[        S	5      nUR                  S
SU-  UR                  -  5      nUR                  SXR                  -  5      n[        SXXU45      n	UR                  US5        UR                  XcU5        UR                  XcU5        SU -  US-  -  S-  UR                  5       -  UR                  -  U	R                  Xc5      R                  U5      -
  S:X  d   eg)zConsider 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   rD      rC   r$   GS   N)r   r   r   rU   r9   rE   diffr	   r   rV   r7   r   r6   rW   rF   express)
r+   arb   rc   rd   r   rC   r$   rg   rh   s
             r    test_pendulum_angular_momentumrm   j   sG    6?DAsAsA	
T6Ass8	,BNN1ffhn%Aqa4x!|QAX\2Ac
A	C1rtt$A	CTT"A#qaQ(AIIaOMM!MM!EAqDL1qvvx'!##-q$,,Q/0456 6 6r"   c            
         [        S5      n [        S5      u  pp4pV[        XX45      n[        S5      nUR	                  SXPR
                  -  X`R                  -  -   5      n	[        SXXU	45      n
[        XUS-  U-  -
  X5S-  U-  -
  XAUS-  US-  -   -  -
  X-  U-  5      n[        U
R                  [        5      (       d   eU
R                  Xy4:X  d   eU
R                  U:X  d   eXzl
        U
R                  Xx4:X  d   eU
R                  U:X  d   eXy4U
l        U
R                  Xy4:X  d   eU
R                  U:X  d   e[        Xx5      U
l        U
R                  Xx4:X  d   eg )Nr3   m, I_x, I_y, I_z, a, boprc   rD   )r   r   r	   r   rV   r7   r8   r   r5   r
   r   )r3   r+   IxIyIzrl   r   Iorp   rq   rc   I_checks               r    test_rigidbody_inertiarw      sf   sA!":;A21		Bc
A	CSS1ss7*+A#qQQ(Aaa1fqj"Avz/Qa00!%!)=Gaii))))99'''99"""AI99'''AI99r"   c            
      6   [        S5      n [        S5      u  pp4pV[        XX45      n[        S5      nUR	                  SXPR
                  -  X`R                  -  -   5      n	[        SXXU45      n
U
R                  U	5      n[        XXS-  -  -   X1US-  -  -   XAUS-  US-  -   -  -   U* U-  U-  S9nX:X  d   e[        S5      nUR                  X R                  S	5        [        U
R                  X5      U-
  R                  U5      5      [        S
S
5      :X  d   eg )Nr3   ro   rp   rq   rc   rD   )ixyr$      rf   )r   r   r	   r   rV   r7   r8   r   parallel_axisorient_axisr9   r   	to_matrixr   )r3   r+   rr   rs   rt   rl   r   ru   rp   rq   rc   IpIp_expectedr$   s                 r    test_parallel_axisr      s!   sA!":;A21		Bc
A	CSS1ss7*+A#qQQ(A	
	B!!d(]BQTMAqD1a4K00qb1fqjBKsAMM!SS!	
		,77:<?DQ{K K Kr"   c                      [        S5      u  pn[        S5      n[        S5      n[        S5      n[	        SXCXU45      n[        5          UR                  X-  U-  5        S S S 5        g ! , (       d  f       g = f)Nzm g hr$   r&   r   r   )r   r   r   r   r   r   set_potential_energy)r+   rM   rN   r$   r&   r   r   s          r    $test_deprecated_set_potential_energyr      sd    gGA!sAc
Aq	A#qQA'A		!	qs1u% 
"	!	!s   	A))
A7N)sympy.physics.mechanicsr   r   r   r   r   r   r	   r
   r   sympyr   r   r   r   sympy.testing.pytestr   r   r!   rA   rP   r`   rm   rw   r   r    r"   r    <module>r      sJ    L L K K 9 2 2 ? * IFB(D,6< .K$&r"   