+
    i#/                         ^ RI HtHtHtHtHtHtHt ^ RIH	t	H
t
HtHt ^ RIHtHt ^ RIHtHt R tR tR tR tR	 tR
 tR tR tR tR tR tR tR tR t R t!R t"R t#R# )    )SymbolsymbolssincosMatrixzerossimplify)PointReferenceFramedynamicsymbolsDyadic)inertiaBody)raiseswarns_deprecated_sympyc            
      l   \        4       ;_uu_ 4        \        R 4      p RRR4       X P                  R 8X  g   Q hV P                  . 8X  g   Q h\	        R4      pVP                  V P                  ^ 4       V P                  pV P                  pVP                  V4      VP                  V4      8X  g   Q hV P                  \        R4      8X  g   Q h\        R4      w  rEp\        R4      w  rxp	V P                  \        V P                  WEWgW4      V P                  38X  g   Q hR#   + '       g   i     EL; i)bodyNbody_masscenter	body_masszbody_ixx body_iyy body_izzzbody_ixy body_iyz body_izx)r   r   nameloadsr
   set_velframe
masscentervelmassr   r   r   )
r   pointcomr   ixxiyyizzixyiyzizxs
             e/var/www/html/photoedit/myenv/lib/python3.14/site-packages/sympy/physics/mechanics/tests/test_body.pytest_defaultr&      s    		!	!F| 
"99::#$E	MM$**a 
//CJJE775>UYYu----99{++++89MCc89MCc<<GDJJ#CM OO- - - - 
"	!	!s   D""D3	c            	         \        R 4      p \        R4      p\        R4      p\        V^^ ^ 4      p\	        4       ;_uu_ 4        \        RV WV4      pRRR4       XP                  pVP                  pV P                  V^ 4       VP                  V4      V P                  V4      8X  g   Q hVP                  V4      V P                  V4      8X  g   Q hVP                  V8X  g   Q hVP                  W038X  g   Q hVP                  '       g   Q h\        VR4      '       g   Q h\        VR4      '       g   Q h\        VR4      '       g   Q h\        VR4      '       g   Q hR#   + '       g   i     EL; i)	rigidbody_masscenterrigidbody_massrigidbody_framerigidbody_bodyNr   r   r   r   )r
   r   r   r   r   r   r   r   r   r   pos_fromr   is_rigidbodyhasattr)r(   r)   r*   body_inertia
rigid_bodyr   r   s          r%   test_custom_rigid_bodyr1      sX    !78,-N$%67O?Aq!4L		!	!*,@(<I
 
" 

CE  !4775>155e<<<<<< 4 = =c BBBB??n,,,,!EEEE""""":|,,,,:v&&&&:w'''':y))))# 
"	!	!s   EE/	c                  r   \        R 4      p \        R4      p\        R4      p\        4       ;_uu_ 4        \	        RV W4      pRRR4       XP
                  pVP                  pV P                  V^ 4       VP                  V4      V P                  V4      8X  g   Q hVP                  V4      V P                  V4      8X  g   Q hVP                  V8X  g   Q h\        VR4      '       d   Q h\        VR4      '       g   Q h\        VR4      '       g   Q h\        VR4      '       g   Q hVP                  \        ^ 4      VP
                  38X  g   Q hVP                  \        ^ 4      8X  g   Q hVP                  '       d   Q h\        V^^^4      Vn        VP                  \        V^^^4      8X  g   Q hVP                  '       g   Q h\        4       ;_uu_ 4        \	        RVR	7      pRRR4       VP                  '       d   Q hVP
                  P!                  R
VP"                  4      pV\        VP                  ^ ^^4      ,          pWv3Vn        VP                  Wv38X  g   Q hVP                  \        ^ 4      8X  g   Q hVP                  '       g   Q hR#   + '       g   i     ELY; i  + '       g   i     L; i)particle_masscenterparticle_massparticle_frameparticle_bodyN_inertiar   r   r   )r   r   )r
   r   r   r   r   r   r   r   r   r,   r   r.   r   r   central_inertiar-   	locatenewx)r3   r4   r5   r6   r   r   r   point_inertias           r%   test_particle_bodyr<   3   se    56?+M#$45N		!	!_.A*< 
" 
"
"CE2775>044U;;;;<< 3 < <S AAAA...}j1111='****=,////=&))))  VAY0H0H$IIII((F1I555)))))$+NAq!$DM!((GNAq!,LLLL%%%%%		!	!_=A 
")))))$$..wHE!GM,?,?Aq$IIM*2M  ]$::::((F1I555%%%%%= 
"	!	!, 
"	!s   JJ&J#	&J6	c                  :   \        R 4      p \        R4      p\        R4      p\        4       ;_uu_ 4        \	        RV W4      pRRR4       \        R4      pVXP
                  P                  ,          pVP                  WSP                  4       \        VP                  4      ^8X  g   Q hVP                  P                  VP                  R,           ^ 4      pVP                  VP
                  ^ 4       VP                  ^ ,          ^ ,          pVP
                  pVP                  V4      VP                  V4      8X  g   Q hVP                  V4      VP                  V4      8X  g   Q hVP                  ^ ,          ^,          V8X  g   Q hR#   + '       g   i     ELP; i)r3   r4   r5   r6   Na_point0)r
   r   r   r   r   r   r:   apply_forcer   lenr   r9   _namer   r   r,   )	r3   r4   r5   r6   r>   force_vectorr   force_pointr   s	            r%   test_particle_body_add_forcerE   Y   sW    56?+M#$45N		!	!_.A*< 
" 	sA}**,,,Ll,D,DE}""#q((($$..i',E	MM-%%q)%%a(+KE??5!UYYu%5555,{0KKKKq!!$444# 
"	!	!s   F		F	c            	      b  a	a
 \        R 4      p \        R4      p\        R4      p\        V^^ ^ 4      p\	        4       ;_uu_ 4        \        RV WV4      o
RRR4       \        R4      p\        R4      pS
P                  P                  RVS
P                  P                  ,          4      pVP                  S
P                  ^ 4       VS
P                  P                  ,          o	S
P                  S	V4       \        S
P                  4      ^8X  g   Q hS
P                  ^ ,          ^ ,          pS
P                  pVP                  V4      VP                  V4      8X  g   Q hVP!                  V4      VP!                  V4      8X  g   Q hS
P                  ^ ,          ^,          S	8X  g   Q hS
P                  S	4       \        S
P                  4      ^8X  g   Q hS
P                  ^,          ^,          S	8X  g   Q h\#        \$        V	V
3R l4       \#        \$        V
3R	 l4       R#   + '       g   i     EL; i)
r(   r)   r*   r+   NlFarigidbody_body_point0c                  (   < SP                  S ^ 4      # r   r@   )rC   r0   s   r%   <lambda>%test_body_add_force.<locals>.<lambda>   s    j44\AF    c                  &   < S P                  ^ 4      # rK   rL   )r0   s   r%   rM   rN      s    j44Q7rO   )r
   r   r   r   r   r   r   r9   r   r:   r   zr@   rA   r   r   r,   r   	TypeError)r(   r)   r*   r/   rG   rH   r   rD   r   rC   r0   s            @@r%   test_body_add_forcerS   r   s    !78,-N$%67O?Aq!4L		!	!*,@(<I
 
" 	sA	B!!++	J E 
MM*""A&
((***L</z A%%%""1%a(KE??5!UYYu%5555,{0KKKKAq!\111<(z A%%%Aq!\111
9FG
9783 
"	!	!s   HH.	c                  t  a \        4       ;_uu_ 4        \        R 4      oRRR4       SP                  P                  p SP	                  V 4       \        SP                  4      ^8X  g   Q hSP                  ^ ,          SP                  V 38X  g   Q h\        \        V3R l4       R#   + '       g   i     L; i)r   Nc                  &   < S P                  ^ 4      # rK   )apply_torque)r   s   r%   rM   &test_body_add_torque.<locals>.<lambda>   s    d//2rO   )	r   r   r   r:   rV   rA   r   r   rR   )torque_vectorr   s    @r%   test_body_add_torquerY      s~    		!	!F| 
"JJLLMm$tzz?a::a=TZZ7777
923 
"	!s   B''B7	c                     \        4       ;_uu_ 4        \        R 4      p RRR4       \        R4      p\        4       ;_uu_ 4        \        RVR7      pRRR4       X P                  P	                  WP
                  4       V P                  X4      VP
                  8X  g   Q hV P                  V4      VP
                  8X  g   Q hR#   + '       g   i     L; i  + '       g   i     L; iANNBr   )r   r   r   r   r   rQ   masscenter_velr\   r]   r^   s      r%   test_body_masscenter_velrb      s    		!	!I 
"sA		!	!A 
"LLCC A!##%%%A!##%%% 
"	! 
"	!s   CCC	C(	c                     \        4       ;_uu_ 4        \        R 4      p RRR4       \        R4      p\        4       ;_uu_ 4        \        RVR7      pRRR4       X P                  P	                  WP
                  4       V P                  X4      VP
                  8X  g   Q hVP                  V 4      VP
                  ) 8X  g   Q hV P                  V4      VP
                  8X  g   Q hR#   + '       g   i     L; i  + '       g   i     L; ir[   )r   r   r   r   set_ang_vely
ang_vel_inra   s      r%   test_body_ang_velrg      s    		!	!I 
"sA		!	!A 
"GG33<<?acc!!!<<?qssd"""<<?acc!!! 
"	! 
"	!s   C(C;(C8	;D	c                  \   \        4       ;_uu_ 4        \        R 4      p \        R4      pRRR4       X P                  P                  XP                  VP                  P                  ^
4       V P                  V4      \        \        ^
4      \        ^
4      ^ .\        ^
4      ) \        ^
4      ^ .. RO.4      8X  g   Q hV P                  VP                  4      \        \        ^
4      \        ^
4      ^ .\        ^
4      ) \        ^
4      ^ .. RO.4      8X  g   Q hR#   + '       g   i     L; i)r\   r^   N)r   r      )	r   r   r   orient_axisrQ   dcmr   r   r   )r\   r^   s     r%   test_body_dcmrl      s    		!	!II 
" GGB/558vBR!4BxR!6LiXYYYY55>Vc"gs2w%:c"gXs2wPQ<RT]$^____ 
"	!s   DD+	c                  @   \        R 4      p \        4       ;_uu_ 4        \        RV R7      pRRR4       XP                  V P                  8X  g   Q hVP                  V P                  8X  g   Q hVP
                  V P
                  8X  g   Q hR#   + '       g   i     Li; i)r]   r^   r_   N)r   r   r   r:   re   rQ   )r]   r^   s     r%   test_body_axisrn      sk    sA		!	!A 
"33!##::33!##::33!##::	 
"	!s   BB	c                     \        R 4      w  r\        R4      p\        4       ;_uu_ 4        \        R4      pRRR4       V XP                  ,          pWP
                  ,          pVP                  WB4       VP                  W$3.8X  g   Q hVP                  WR4       VP                  W$V,           3.8X  g   Q hR#   + '       g   i     L; i)za bPr^   N)r   r
   r   r   r:   re   r@   r   )r>   brp   r^   f1f2s         r%   #test_apply_force_multiple_one_pointrt      s    5>DAc
A		!	!I 
"	
133B	
33BMM"77wiMM"77b5zl""" 
"	!s   B99C		c                     \        R 4      w  r\        R4      w  r#rE\        R4      p\        R4      p\        4       ;_uu_ 4        \	        R4      p\	        R4      p	RRR4       \        R4      p
VP                  XP                  WHP                  ,          4       VP                  X	P                  WYP                  ,          4       W,          V
P                  ,          pVP                  WW4       VP                  Wk3.8X  g   Q hV	P                  W{) 3.8X  g   Q hVP                  V,          V
P                  ,          pV	P                  V,          V
P                  ,          pVP                  V4       V	P                  V4       VP                  Wk3VP                  V3.8X  g   Q hV	P                  W{) 3V	P                  V3.8X  g   Q hW:P                  ,          pVP                  WR7       VP                  Wk3VP                  W,           3.8X  g   Q hV	P                  W{) 3V	P                  V) V,           3.8X  g   Q hR#   + '       g   i     EL; i)	zf gz	q x v1 v2P1P2B1B2Nr]   reaction_body)r   r   r
   r   r   r   r   r   r:   rQ   r@   r   r   re   r   )fgqr:   v1v2rv   rw   rx   ry   r]   forceg1g2force2s                  r%   test_apply_forcer      s   5>DA!+.LA"	tB	tB		!	!$Z$Z 
" 	sAJJrxxDD!JJrxxDD!CGENN5b%88}$$$88V~%%%	133B	133BNN2NN288
R]]B$7888888Vr}}b&9::::ssUFNN6N,88bmmVY%?@@@@88Vr}}vgbj&ABBBB7 
"	!	!s   II	c                  :   \        R 4      p \        R4      p\        4       ;_uu_ 4        \        R4      p\        R4      pRRR4       \	        R4      pW,          VP
                  ,          pXP                  VX4       VP                  VP                  V3.8X  g   Q hVP                  VP                  V) 3.8X  g   Q hWP                  ,          pVP                  V4       VP                  VP                  WV,           3.8X  g   Q hR#   + '       g   i     L; i)tr~   rx   ry   Nr]   )
r   r   r   r   r   r:   rV   r   r   re   )r   r~   rx   ry   r]   torquetorque2s          r%   test_apply_torquer      s    AsA		!	!$Z$Z 
" 	sASWFOOFB886*++++88F7+,,,,eGOOG886>23333 
"	!s   D

D	c                  \   \        R 4      p \        R4      p\        4       ;_uu_ 4        \        R4      pRRR4       V XP                  ,          pVP                  W14       VP                  W3.8X  g   Q hVP                  4        VP                  . 8X  g   Q hR#   + '       g   i     Ln; i)r>   rp   r^   N)r   r
   r   r   rQ   r@   r   clear_loads)r>   rp   r^   r   s       r%   test_clear_loadr     s|    Ac
A		!	!I 
"accEEMM%77zl"""MMO77b== 
"	!s   BB+	c                  ~   \        R 4      p \        R4      p\        4       ;_uu_ 4        \        R4      pRRR4       XP                  pVP                  pVP                  W04       VP                  WA4       VP                  W3W3.8X  g   Q hVP                  V4       VP                  W3.8X  g   Q hVP                  VP                  V4      4       VP                  W3VP                  VP                  V4      3.8X  g   Q hVP                  4        VP                  W3.8X  g   Q hR#   + '       g   i     L; i)rv   rw   r^   N)r
   r   r   r:   re   r@   r   remove_loadrV   crossr   )rv   rw   r^   rr   rs   s        r%   test_remove_loadr     s    	tB	tB		!	!I 
"	
B	
BMM"MM"77x"****MM"77xj   NN288B< 77x!''288B<!89999MMO77xj    
"	!s   D,,D<	c                 v   \        4       ;_uu_ 4        \        R4      p \        R4      p\        R4      p\        R4      pRRR4       \        R4      w  rE\        R4      w  rgr\        R4      w  rXP	                  V
X P
                  ,          4       V P	                  Wd,          V P
                  ,          VR	7       V P	                  WtP                  4       ,          V P
                  ,          VR	7       XP	                  VP                  V,          V P                  ,          4       XP	                  VP                  V,          V P                  ,          4       VP                  W,          V P                  ,          VR	7       VP                  WP                  ,          4       VP                  VP                  WV,          ,
          WtP                  4       ,          ,
          V P
                  ,          3.8X  g   Q hVP                  VP                  VP                  V,          V P                  ,          3VP                  WV,          ,           V P                  ,          3.8X  g   Q hVP                  VP                  VP                  V,          V P                  ,          3VP                  V	) V,          V P                  ,          3.8X  g   Q hV P                  V P                  WtP                  4       ,          Wd,          ,           V P
                  ,          3.8X  g   Q hR#   + '       g   i     EL; i)
zXExample based on: https://pydy.readthedocs.io/en/latest/examples/multidof-holonomic.htmlWr^   rp   rq   Nzq1 q2zk c g kTzF Trz   )r   r   r   r   r@   r:   diffr   re   rV   rQ   r   r   r   )r   r^   rp   rq   q1q2kcr}   kTFTs               r%   9test_apply_loads_on_multi_degree_freedom_holonomic_systemr     s   		!	!IIII	 
"
 G$FB*%KA!% DA MM!ACC%MM!$qss(!M,MM!GGI+acc/M3MM!&&(133,MM!&&(133, NN259AN.NN1SS577qR4x!GGI+'=qss&BCDDDD77affQhqssl3aggrE	1335OPPPP77affQhqssl3aggs2vaccz5JKKKK77q{QT'9133&>?@@@@/ 
"	!	!s   -L''L8	c            
      (   \        R 4      p \        R4      w  rr4rV\        WW44      p\        R4      pVP	                  RWPP
                  ,          W`P                  ,          ,           4      p	\        4       ;_uu_ 4        \        RWWR7      p
RRR4       X
P                  V	4      p\        WW^,          ,          ,           W1V^,          ,          ,           WAV^,          V^,          ,           ,          ,           V) V,          V,          R7      pW8X  g   Q h\        R4      pVP                  W P                  ^4       \        V
P                  W4      V,
          P                  V4      4      \        ^^4      8X  g   Q h\        R4      pVP	                  RWPP
                  ,          W`P                  ,          ,           4      p	\        4       ;_uu_ 4        \        R	WV R
7      pRRR4       XP                  W4      p\        WV^,          ,          W^,          ,          W^,          V^,          ,           ,          V) V,          V,          R7      pVP                  '       d   Q hW8X  g   Q hR#   + '       g   i     EL; i  + '       g   i     L; i)r]   zm, I_x, I_y, I_z, a, bopR)r   r   r   r8   N)r"   r\   rp   )r   r   r   )r   r   r   r
   r9   r:   re   r   r   parallel_axisrj   rQ   r	   	to_matrixr   r-   )r]   mIxIyIzr>   rq   Ior   r   r   IpIp_expectedr\   rp   s                  r%   test_parallel_axisr   9  s   sA!":;A21		Bc
A	CSS1ss7*+A		!	!!H 
"	
	B!!d(]BQTMAqD1a4K00qb1fqjBKsAMM!SS!	
		,77:<?DQ{K K K 	c
A	CSS1ss7*+A		!	!!4 
"	
	B!aZ!VQq&16/5J b1fqj*K~~~) 
"	!	! 
"	!s   =I-J-I>	J	N)$sympyr   r   r   r   r   r   r	   sympy.physics.vectorr
   r   r   r   sympy.physics.mechanicsr   r   sympy.testing.pytestr   r   r&   r1   r<   rE   rS   rY   rb   rg   rl   rn   rt   r   r   r   r   r   r    rO   r%   <module>r      s{   * * * N N 1 ?-"*4#&L529B4&	"`
# CD4"	!"A8rO   