
    hU0                         S SK JrJrJr  S SKJrJr  S SKrS rS r	S r
S rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rg)    )dynamicsymbolsPointReferenceFrame)raisesignore_warningsNc                     [        S5      u  p[        SS5      u  p#[        SS5      u  pE[        S5      n[        S5      nUR                  XbUR                  -  5        [	        S5      nUR                  SUR                  5      n	U	R                  US5        UR                  US5        U	R                  XU5      X'R                  -  :X  d   eUR                  XfR                  5        U	R                  XU5      UR                  X'R                  -  -   :X  d   eU	R                  XwR                  5        U	R                  XU5      UR                  UR                  -   X'R                  -  -   :X  d   eg 	Nq q2      NBOPr   )
r   r   set_ang_velzr   	locatenewxset_velv1pt_theoryy
qq2qdq2dqddq2ddr   r   r   r   s
             _/var/www/fran/franai/venv/lib/python3.13/site-packages/sympy/physics/vector/tests/test_point.pytest_point_v1pt_theorysr       s   6"EAVQ'GBvq)ICsAsAMM!!##Xc
A	CAIIaOIIaO==q!R##X---IIa==q!QSS28^333IIa==q!QSS133Ycc%9999    c                  f   [        S5      u  p[        SS5      u  p#[        SS5      u  pE[        S5      n[        S5      nUR                  XbUR                  -  5        [	        S5      nUR                  SUR                  5      n	U	R                  US5        UR                  US5        U	R                  XU5      US-  * UR                  -  XGR                  -  -   :X  d   eU	R                  XsUR                  -  5        U	R                  XU5      US-  * UR                  -  XGR                  -  -   XWR                  -  -   :X  d   eUR                  XcUR                  -  5        U	R                  XU5      XRS-  -
  UR                  -  X2-  U-   UR                  -  -   XWR                  -  -   :X  d   eg r	   )
r   r   r   r   r   r   r   r   a1pt_theoryr   r   s
             r   test_point_a1pt_theorysr$      ss   6"EAVQ'GBvq)ICsAsAMM!!##Xc
A	CAIIaOIIaO==q!r1uX^cCCi%????IIaqss==q!r1uX^cCCi%?$*%LLLLIIaqss==q!t!e|qss&:chnPQPSPS=S&S#ccz'* + + +r!   c                  D   [        S5      n [        SS5      n[        S5      nUR                  SSXR                  /5      n[	        S5      nUR                  SS5      nUR                  US5        UR                  XBU5      S:X  d   eUR                  SUR                  5      nUR                  XBU5      XR                  -  UR                  -  :X  d   eUR                  X"R                  5        UR                  XBU5      UR                  XR                  -  -   :X  d   eg )	Nr   r   r   r   Axisr   r   r   )
r   r   	orientnewr   r   r   r   v2pt_theoryr   r   )r   r   r   r   r   r   s         r   test_point_v2pt_theorysr)   *   s    sA	Q	BsA	C!SS*Ac
A	CAIIaO==q!Q&&&	CA==q!b33hn555IIa==q!QSS28^333r!   c                     [        S5      n [        SS5      n[        SS5      n[        S5      nUR                  SSXR                  /5      n[	        S5      nUR                  SS	5      nUR                  US	5        UR                  XSU5      S	:X  d   eUR                  XTR                  5        UR                  XSU5      US-  * UR                  -  X$R                  -  -   :X  d   eg )
Nr   r   r   r   r   r&   r   r   r   )r   r   r'   r   r   r   r   a2pt_theoryset_posr   r   )r   r   r   r   r   r   r   s          r   test_point_a2pt_theorysr-   9   s    sA	Q	B
a
 CsA	C!SS*Ac
A	CAIIaO==q!Q&&&IIa==q!r1uf^scck%AAAAr!   c                     [        S5      u  p[        SS5      u  p#[        SS5      u  pE[        S5      n[        S5      nUR                  USUR                  -  5        [	        S5      nUR                  SXR                  -  XR                  -  -   5      n	U	R                  U5      XR                  -  XR                  -  -   :X  d   eU	R                  XrUR                  -  X7R                  -  -   5        U	R                  U5      X'R                  -  X7R                  -  -   :X  d   eUR                  US	5        UR                  U5      S	:X  d   eU	R                  XU5      S
U -  U-   UR                  -  XWR                  -  -   SU-  UR                  -  -   :X  d   eUR                  SSXR                  /5      n[	        S5      nUR                  SSUR                  -  5      n	UR                  USUR                  -  5        UR                  U5      SUR                  -  :X  d   eU	R                  XU5      SUS-  -  UR                  -  SU-  UR                  -  -   :X  d   eUR                  USUR                  -  5        [	        S5      nUR                  SXR                  -  XR                  -  -   5      n	U	R                  XrUR                  -  X7R                  -  -   5        UR                  US	5        U	R                  XU5      X'R                  -  X7R                  -  -   SU -  UR                  -  -
  :X  d   eg )Nr
   r   r   r   r      r   r   r   ir&   
   )r   r   r   r   r   r   r   pos_fromr   velr#   r   r'   r+   r   r   s
             r   test_point_funcsr4   G   s   6"EAVQ'GBvq)ICsAsAMM!QWc
A	CSS28+,A::a=AGb33h....IIaaccC##I%&558rCCx#)++++IIaO558q====q!sQw}&;tssl&J #bACC/'0 1 1 1 	
C!SS*Ac
A	Cacc"AIIaQSS558q133w==q!cBEkQSS%8BH;K%KKKKMM!QWc
A	CSS28+,AIIaaccC##I%&IIaO==q!R##Xcc	%9AEACCK%GGGGr!   c                  ^   [        S5      n [        S5      nUR                  SSXR                  /5      n[	        S5      nUR                  SSUR                  -  SUR                  -  -   5      nUR                  U5      SUR                  -  SUR                  -  -   :X  d   eUR                  S	SUR                  -  SUR                  -  -   5      nUR                  U5      SUR                  -  SUR                  -  -   :X  d   eUR                  U5      SUR                  -  SUR                  -  -   SUR                  -  -   SUR                  -  -   :X  d   eUR                  U5      S
UR                  -  SUR                  -  -
  SUR                  -  -
  SUR                  -  -
  :X  d   eg )Nr   r   r   r&   r   r   r1   r/   Qr0   )	r   r   r'   r   r   r   r   r2   r   )r   r   r   r   r   r6   s         r   test_point_posr7   g   sa   sAsA	C!SS*Ac
A	CaccAG+,A::a=BHq133w....	CaccAG+,A::a=BHq133w....::a=BHrACCx/!acc'9AGCCCC::a=C!##IQSS01qss7:QWDDDDr!   c                    ^^^ [        S5      n [        S5      m[        S5      m[        S5      u  mnTR                  U TTR                  -  XR
                  -  -   5        TR                  U T5      TR                  :X  d   eTR                  U TU5      TR                  U R
                  4:X  d   e[        [        UUU4S j5        g )Nr   Apzu1, u2c                  (   > TR                  T T5      $ N)partial_velocity)r9   r:   u1s   r   <lambda>-test_point_partial_velocity.<locals>.<lambda>   s    q11!R8r!   )	r   r   r   r   r   r   r=   r   
ValueError)r   u2r9   r:   r>   s     @@@r   test_point_partial_velocityrC   s   s    sAsAc
AH%FBIIaaccBH$%a$+++aR(QSS!##J666
:89r!   c                    ^^^^ [        S5      u  p[        S5      m[        S5      m[        S5      m[        S5      mTR                  TU TR                  -  5        [        [        UU4S j5        TR                  TUTR                  -  5        TR                  T5      UTR                  -  :X  d   e[        [        UU4S j5        g )Nq1 q2r   r   r6   r   c                  &   > TR                  T 5      $ r<   r3   )r   r6   s   r   r?    test_point_vel.<locals>.<lambda>   s    ar!   c                  &   > TR                  T 5      $ r<   rG   )r   r   s   r   r?   rH      s    qr!   )
r   r   r   r,   r   r   rA   r   r   r3   )q1r   r   r   r   r6   s     @@@@r   test_point_velrK      s    G$FBsAsAc
Ac
AIIaacc
:()IIaacc558rACCx
:)*r!   c                    ^^^ [         R                  n [        S5      u  p[        S5      m[        S5      m[        S5      n[        S5      nUR	                  X1TR
                  -  5        UR                  TUTR                  -  5        UR                  T5      UR                  U 5      TR
                  -  UTR                  -  -   :X  d   e[        S5      nUR	                  X1TR
                  -  5        [        S5      mTR	                  XRTR                  -  5        [        [        UU4S j5        [        [        UU4S	 j5        g )
NrE   r   r   r   r6   P1P2c                  &   > TR                  T 5      $ r<   rG   )r   rN   s   r   r?   %test_auto_point_vel.<locals>.<lambda>       q	r!   c                  &   > TR                  T 5      $ r<   rG   r   rN   s   r   r?   rP      s    rvvayr!   )r   _tr   r   r,   r   r   r   r3   diffr   r   rA   )	trJ   r   r   r6   rM   r   r   rN   s	         @@@r   test_auto_point_velrW      s    AG$FBsAsAc
Ac
AIIaaccIIaacc558rwwqzACC'"qss(2222	tBJJqqss(	tBJJr8
:)*
:()r!   c                     [         R                  n [        S5      u  p[        S5      n[        S5      nUR	                  X1UR
                  -  5        [        S5      nUR                  XBUR                  -  5        UR	                  X1UR                  -  5        [        S5      nUR                  XQUR                  -  5        [        S5      nUR                  USU-  UR                  -  5        UR                  U5      SUR                  U 5      -  UR                  -  XR                  U 5      -   UR                  -  -   :X  d   eg )NrE   r   r   rM   rN   P3r1   )r   rT   r   r   r   r   r,   r   r   r3   rU   )rV   rJ   r   r   r   rM   rN   rY   s           r   'test_auto_point_vel_multiple_point_pathrZ      s    AG$FBsAc
AIIaacc	tBJJqqss(JJqqss(	tBJJr8	tBJJr27QSS=!66!9RWWQZ!##-ggajACC0GGGGGr!   c                  F   [         R                  n [        S5      u  pn[        S5      n[        S5      nUR	                  XCUR
                  -  5        [        S5      nUR                  XRUR                  -  5        UR                  U5      UR                  U 5      UR                  -  X4R
                  -  -   :X  d   eUR                  U5      X4R
                  -  :X  d   eUR	                  XCUR                  -  5        UR                  U5      X4R                  -  :X  d   eg )Nz
q1, q2, u1r   rM   )r   rT   r   r   r   r   r,   r   r3   rU   r   )rV   rJ   r   r>   r   r   rM   s          r   test_auto_vel_dont_overwriter\      s    A-JBBsAdAIIaacc	tBJJqqss(66!9
QSS(283333558rCCxJJqqss(66!9SS   r!   c                  F  ^^^ [        S5      u  p[        S5      m[        S5      m[        S5      nUR                  TU TR                  -  5        [        S5      mTR                  UTR                  5        [        [        UU4S j5        [        [        UU4S j5        g )NrE   r   Sr   rM   c                  &   > TR                  T 5      $ r<   rG   )r   rM   s   r   r?   Rtest_auto_point_vel_if_tree_has_vel_but_inappropriate_pos_vector.<locals>.<lambda>   rQ   r!   c                  &   > T R                  T5      $ r<   rG   )rM   r^   s   r   r?   r`      rQ   r!   )	r   r   r   r   r   r,   r   r   rA   )rJ   r   r   r   rM   r^   s      @@@r   @test_auto_point_vel_if_tree_has_vel_but_inappropriate_pos_vectorrb      ss    G$FBsAsAc
AIIaacc	tBJJq!##
:)*
:)*r!   c                     [         R                  n [        S5      u  pp4[        S5      n[        S5      nUR	                  XSUR
                  -  5        [        S5      nUR                  XbUR                  -  5        UR	                  XQUR                  -  5        [        S5      nUR                  XqUR                  -  5        [        S5      n	U	R                  USU-  UR                  -  5        [        S5      n
U
R                  XUR
                  -  5        [        S	5      nUR	                  XTUR                  -  5        [        S
5      nUR                  XUR                  -  5        U
R                  XUR
                  -  X%R                  -  -   5        [        R                  " 5          [        R                  " S5        [        [        5         U
R                  U5      UR                  U 5      UR
                  -  XER                  -  -   SUR                  U 5      -  UR                  -  -   :X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nzq1 q2 u1 u2r   r   rM   rN   rY   r1   P4r   O1errorr   )r   rT   r   r   r   r   r,   r   r   warningscatch_warningssimplefilterr   UserWarningr3   rU   )rV   rJ   r   r>   rB   r   r   rM   rN   rY   rd   r   re   s                r   !test_auto_point_vel_shortest_pathrk      s   A#M2NBBsAc
AIIaacc	tBJJqqss(JJqqss(	tBJJr8	tBJJr27QSS=!	tBJJr8c
AIIaacc	tBJJqqss(JJr8b33h&'		 	 	"g&[)66!9
QSS 028 ;a"''!*nqss>R RRRR * 
#	")) 
#	"s%   -&IA%I
9I

I	I
I)c                    ^^ [         R                  n [        S5      u  pp4[        S5      m[        S5      n[        S5      nUR	                  TUTR
                  -  5        [        S5      mTR                  XbTR
                  -  X5R                  -  -   5        [        [        UU4S j5        TR                  USXR
                  45        TR                  T5      XBR                  U 5      -   TR
                  -  UR                  U 5      UR                  -  -   X1R                  U 5      -  UR                  -  -
  :X  d   eg )Nz	q q1 q2 ur   r   r   r   c                  &   > TR                  T 5      $ r<   rG   )r   r   s   r   r?   6test_auto_point_vel_connected_frames.<locals>.<lambda>   s    quuQxr!   r&   )r   rT   r   r   r   r   r,   r   r   rA   orientr3   rU   r   )	rV   r   rJ   r   ur   r   r   r   s	          @@r   $test_auto_point_vel_connected_framesrq      s    A!+.LA2sAsAc
AIIaQSSc
AIIaaccBH$%
:'(HHQCC!558GGAJ!##-
QSS0@@2q	>TUTWTWCWWWWWr!   c                    ^^ [        S5      u  p[        S5      m[        S5      m[        S5      n[        S5      n[        S5      nUR                  TUTR                  -  5        UR                  TUTR
                  -  5        UR                  TUTR                  -  5        TR                  X TR                  -  5        TR                  X0TR
                  -  5        TR                  X@TR                  -  5        [        R                  " 5          [        R                  " S5        [        [        UU4S j5        S S S 5        g ! , (       d  f       g = f)	Nzq ur   r   r   r6   Rrf   c                  &   > TR                  T 5      $ r<   rG   r   r   s   r   r?   Ctest_auto_point_vel_multiple_paths_warning_arises.<locals>.<lambda>   s    AEE!Hr!   )r   r   r   r   r   r   r   r,   rg   rh   ri   r   rj   )r   rp   r   r6   rs   r   r   s        @@r   1test_auto_point_vel_multiple_paths_warning_arisesrw      s    % DAsAc
Ac
Ac
Ac
AIIaQSSIIaACCIIaQSSIIaQSSIIaQSSIIaQSS		 	 	"g&{,- 
#	"	"s   ,E
Ec                  \  ^^ [        S5      n [        S5      n[        S5      m[        S5      n[        S5      mU R                  TTR                  5        UR	                  U TR                  5        TR	                  UTR
                  5        UR	                  TTR                  5        UR	                  UTR                  TR
                  -   5        [        R                  " 5          [        R                  " S5        [        [        UU4S j5        S S S 5        g ! , (       d  f       g = f)Nr   rM   rN   rY   r   rf   c                  &   > TR                  T 5      $ r<   rG   rS   s   r   r?   5test_auto_vel_cyclic_warning_arises.<locals>.<lambda>  s    BFF1Ir!   )r   r   r   r   r,   r   r   rg   rh   ri   r   rj   )r   rM   rY   r   rN   s      @@r   #test_auto_vel_cyclic_warning_arisesr{      s    c
A	tB	tB	tBsAIIaJJq!##JJr133JJr133JJr1339		 	 	"g&{-. 
#	"	"s   (,D
D+c                     [        S5      n [        S5      n[        S5      n[        S5      n[        S5      nU R                  XDR                  5        UR	                  XR                  5        UR	                  XR
                  5        UR	                  X$R                  5        UR	                  X4R                  UR
                  -   5        [        R                  " SS9 n[        R                  " S5        UR                  U5        [        US	   R                  5      R                  S
S5      n[        US	   R                  [         5      (       d   eSU;   d   e S S S 5        g ! , (       d  f       g = f)Nr   rM   rN   rY   r   Trecordalways
 zKinematic loops are defined among the positions of points. This is likely not desired and may cause errors in your calculations.)r   r   r   r   r,   r   r   rg   rh   ri   r3   strmessagereplace
issubclasscategoryrj   )r   rM   rN   rY   r   wmsgs          r    test_auto_vel_cyclic_warning_msgr     s   c
A	tB	tB	tBsAIIaJJq##JJr33JJr33JJr339		 	 $	/1h'
q	!B%-- ((s3!B%..+6666 R  VY  Y  	Y  Y 
0	/	/s    A<E&&
E4c                     [        S5      n [        S5      n[        S5      n[        S5      nUR                  X R                  5        UR                  X R                  5        UR                  X R                  5        UR                  X0R                  5        [        R                  " SS9 n[        R                  " S5        UR                  U 5        [        US   R                  5      R                  S	S
5      n[        US   R                  [         5      (       d   eSU;   d   eSU;   d   eSU;   d   e S S S 5        g ! , (       d  f       g = f)Nr   r   r   r6   Tr}   r   r   r   r   Velocityz'automatically calculated based on pointzfVelocities from these points are not necessarily the same. This may cause errors in your calculations.)r   r   r   r   r   r,   r   rg   rh   ri   r3   r   r   r   r   r   rj   )r   r   r   r6   r   r   s         r   'test_auto_vel_multiple_path_warning_msgr     s   sAc
Ac
Ac
AIIaIIaIIaIIa		 	 $	/1h'	a!B%-- ((s3!B%..+6666S   8C???w{~~~~ 
0	/	/s   -BE
Ec                     [        S5      u  p[        SS5      u  p#[        S5      n[        S5      n[        S5      nUR                  XDR                  U 5        UR	                  XBUR                  -  5        UR                  XUR                  U5        UR	                  XSUR                  -  5        [        S5      nUR                  US5        [        S	5      nUR                  XuR                  5        UR                  US5        UR                  US5        [        S
5      n	U	R                  XR                  5        U	R                  US5        U	R                  R                  5       n
U	R                  U5      X%R                  -  X#-   UR                  -  -   :X  d   eXl	        U	R                  XU5        U	R                  U5      X%R                  -  X#-   UR                  -  -   :X  d   eg )Nq1:3zu1:3r   r9   r   CAmr   BmCm)r   r   orient_axisr   r   r   r   r,   r   	_vel_dictcopyr3   r   r(   )rJ   r   r>   rB   r9   r   r   r   r   r   temps              r   test_auto_vel_derivativer   1  st   F#FBFA&FBsAsAsAMM!SS"MM!!##XMM!SS"MM!!##X	tBJJq!	tBJJr33JJq!JJq!	tBJJr33JJq!<<D66!9ccRWO3444LNN2!66!9ccRWO3444r!   c                      [        S5      n [        S5      nUR                  U S5        UR                  U 5      SU R                  -  :X  d   eg )Nr   r   r   )r   r   r   accr   ru   s     r   test_auto_point_acc_zero_velr   K  s@    sAc
AIIaO558q133wr!   c                     [         R                  n [        S5      n[        S5      n[        S5      nUR                  X"R                  U5        [        S5      nUR                  US5        [        S5      nUR                  XCR                  5        UR                  U5      UR                  U 5      S-  * UR                  -  UR                  U S5      UR                  -  -   :X  d   eg )NrJ   r   r9   r   r   r   r   )r   rT   r   r   r   r   r   r,   r   r   rU   r   )rV   rJ   r   r9   r   r   s         r   test_auto_point_acc_compute_velr   Q  s    A		BsAsAMM!SS"c
AIIaOc
AIIa558
a'!##-10CCCCCr!   c                     [        S5      u  p[        SS5      u  p#[        SS5      u  pE[        S5      n[        S5      n[        S5      nUR                  XfR                  U 5        UR                  XwR                  U5        [	        S5      n	U	R                  US5        [	        S	5      n
U
R                  XR                  5        U
R                  US5        U
R                  US5        [	        S
5      nUR                  XR                  5        UR                  US5        U
R                  R                  5       UR                  R                  5       pU
R                  R                  5       UR                  R                  5       pUS-  * UR                  -  XGR                  -  -   X#-   S-  UR                  -  -
  XE-   UR                  -  -   nUR                  U5      U:X  d   eXsU
l        Ul        XsU
l
        Ul
        U
R                  XU5        UR                  XU5        U
R                  XU5        UR                  XU5      U:X  d   eg )Nr   r   r   r9   r   r   r   r   r   r   )r   r   r   r   r   r   r,   r   r   r   	_acc_dictr   r   r(   r+   )rJ   r   r>   rB   v1v2r9   r   r   r   r   r   Bm_vel_dictCm_vel_dictBm_acc_dictCm_acc_dictchecks                    r   test_auto_acc_derivativer   ^  s    F#FBFA&FBFA&FBsAsAsAMM!SS"MM!SS"	tBJJq!	tBJJr33JJq!JJq!	tBJJr33JJq!  "||002BLL4E4E4G!||002BLL4E4E4G1WHqssNR##X%Q(<<133NE66!9!,BL",!,BL",NN2!NN2!NN2!>>"#u,,,r!   )sympy.physics.vectorr   r   r   sympy.testing.pytestr   r   rg   r    r$   r)   r-   r4   r7   rC   rK   rW   rZ   r\   rb   rk   rq   rw   r{   r   r   r   r   r   r    r!   r   <module>r      s    F F 8 :$+&4BH@
E:
+*$H!	+S2X."/Y$$54D -r!   