
    sgU0                         d dl mZmZmZ d dlmZmZ d dlZd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)    )dynamicsymbolsPointReferenceFrame)raisesignore_warningsNc                     t        d      \  } }t        dd      \  }}t        dd      \  }}t        d      }t        d      }|j                  |||j                  z         t	        d      }|j                  d|j                        }	|	j                  |d       |j                  |d       |	j                  |||      ||j                  z  k(  sJ |j                  ||j                         |	j                  |||      |j                  ||j                  z  z   k(  sJ |	j                  ||j                         |	j                  |||      |j                  |j                  z   ||j                  z  z   k(  sJ y 	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
             X/var/www/html/venv/lib/python3.12/site-packages/sympy/physics/vector/tests/test_point.pytest_point_v1pt_theorysr       s7   6"EArVQ'GBvq)ICsAsAMM!R!##Xc
A	CAIIaOIIaO==Aq!R!##X---IIa==Aq!QSS28^333IIa==Aq!QSS133Yacc%9999    c                  ~   t        d      \  } }t        dd      \  }}t        dd      \  }}t        d      }t        d      }|j                  |||j                  z         t	        d      }|j                  d|j                        }	|	j                  |d       |j                  |d       |	j                  |||      |dz   |j                  z  ||j                  z  z   k(  sJ |	j                  |||j                  z         |	j                  |||      |dz   |j                  z  ||j                  z  z   ||j                  z  z   k(  sJ |j                  |||j                  z         |	j                  |||      ||dz  z
  |j                  z  ||z  |z   |j                  z  z   ||j                  z  z   k(  sJ y r	   )
r   r   r   r   r   r   r   r   a1pt_theoryr   r   s
             r   test_point_a1pt_theorysr$      s   6"EArVQ'GBvq)ICsAsAMM!R!##Xc
A	CAIIaOIIaO==Aq!r1uX^cACCi%????IIaqss==Aq!r1uX^cACCi%?$*%LLLLIIaqss==Aq!tb!e|qss&:cBhnPQPSPS=S&S#accz'* + + +r!   c                  L   t        d      } t        dd      }t        d      }|j                  dd| |j                  g      }t	        d      }|j                  dd      }|j                  |d       |j                  |||      dk(  sJ |j                  d|j                        }|j                  |||      ||j                  z  |j                  z  k(  sJ |j                  ||j                         |j                  |||      |j                  ||j                  z  z   k(  sJ y )	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!QSS*Ac
A	CAIIaO==Aq!Q&&&	CA==Aq!b133hn555IIa==Aq!QSS28^333r!   c                     t        d      } t        dd      }t        dd      }t        d      }|j                  dd| |j                  g      }t	        d      }|j                  dd	      }|j                  |d	       |j                  |||      d	k(  sJ |j                  ||j                         |j                  |||      |dz   |j                  z  ||j                  z  z   k(  sJ y )
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!QSS*Ac
A	CAIIaO==Aq!Q&&&IIa==Aq!r1uf^sacck%AAAAr!   c                     t        d      \  } }t        dd      \  }}t        dd      \  }}t        d      }t        d      }|j                  |d|j                  z         t	        d      }|j                  d| |j                  z  ||j                  z  z         }	|	j                  |      | |j                  z  ||j                  z  z   k(  sJ |	j                  |||j                  z  ||j                  z  z          |	j                  |      ||j                  z  ||j                  z  z   k(  sJ |j                  |d	       |j                  |      d	k(  sJ |	j                  |||      d
| z  |z   |j                  z  ||j                  z  z   d|z  |j                  z  z   k(  sJ |j                  dd| |j                  g      }t	        d      }|j                  dd|j                  z        }	|j                  |d|j                  z         |j                  |      d|j                  z  k(  sJ |	j                  |||      d|dz  z  |j                  z  d|z  |j                  z  z   k(  sJ |j                  |d|j                  z         t	        d      }|j                  d| |j                  z  ||j                  z  z         }	|	j                  |||j                  z  ||j                  z  z          |j                  |d	       |	j                  |||      ||j                  z  ||j                  z  z   d| z  |j                  z  z
  k(  sJ y )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"EArVQ'GBvq)ICsAsAMM!QWc
A	CQSS28+,A::a=AGb133h....IIaaccC!##I%&558rACCx#)++++IIaO558q====Aq!sQw}&;tqssl&J #bACC/'0 1 1 1 	
C!QSS*Ac
A	Cacc"AIIaQSS558q133w==Aq!cBEkQSS%8BH;K%KKKKMM!QWc
A	CQSS28+,AIIaaccC!##I%&IIaO==Aq!R!##Xacc	%9AEACCK%GGGGr!   c                  X   t        d      } t        d      }|j                  dd| |j                  g      }t	        d      }|j                  dd|j                  z  d|j                  z  z         }|j                  |      d|j                  z  d|j                  z  z   k(  sJ |j                  d	d|j                  z  d|j                  z  z         }|j                  |      d|j                  z  d|j                  z  z   k(  sJ |j                  |      d|j                  z  d|j                  z  z   d|j                  z  z   d|j                  z  z   k(  sJ |j                  |      d
|j                  z  d|j                  z  z
  d|j                  z  z
  d|j                  z  z
  k(  sJ y )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   sc   sAsA	C!QSS*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                     t        d      } t        d      t        d      t        d      \  }j                  | j                  z  || j
                  z  z          j                  |       j                  k(  sJ j                  | |      j                  | j
                  fk(  sJ t        t        fd       y )Nr   Apzu1, u2c                  (    j                         S N)partial_velocity)r9   r:   u1s   r   <lambda>z-test_point_partial_velocity.<locals>.<lambda>   s    q11!R8 r!   )	r   r   r   r   r   r   r=   r   
ValueError)r   u2r9   r:   r>   s     @@@r   test_point_partial_velocityrB   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                     t        d      \  } }t        d      t        d      t        d      t        d      j                  | j                  z         t        t        fd       j                  |j                  z         j                        |j                  z  k(  sJ t        t        fd       y )Nq1 q2r   r   r6   r   c                  &    j                         S r<   r3   )r   r6   s   r   r?   z test_point_vel.<locals>.<lambda>   s    a r!   c                  &    j                         S r<   rF   )r   r   s   r   r?   z test_point_vel.<locals>.<lambda>   s    q r!   )
r   r   r   r,   r   r   r@   r   r   r3   )q1r   r   r   r   r6   s     @@@@r   test_point_velrI      s    G$FBsAsAc
Ac
AIIaacc
:()IIaacc558rACCx
:)*r!   c                     t         j                  } t        d      \  }}t        d      t        d      t        d      }t        d      }|j	                  ||j
                  z         |j                  |j                  z         |j                        |j                  |       j
                  z  |j                  z  z   k(  sJ t        d      }|j	                  ||j
                  z         t        d      j	                  ||j                  z         t        t        fd       t        t        fd	       y )
NrD   r   r   r   r6   P1P2c                  &    j                         S r<   rF   )r   rL   s   r   r?   z%test_auto_point_vel.<locals>.<lambda>       q	 r!   c                  &    j                         S r<   rF   r   rL   s   r   r?   z%test_auto_point_vel.<locals>.<lambda>   s    rvvay r!   )r   _tr   r   r,   r   r   r   r3   diffr   r   r@   )	trH   r   r   r6   rK   r   r   rL   s	         @@@r   test_auto_point_velrT      s    AG$FBsAsAc
Ac
AIIaaccIIaacc558rwwqzACC'"qss(2222	tBJJq"qss(	tBJJr28
:)*
:()r!   c                     t         j                  } t        d      \  }}t        d      }t        d      }|j	                  |||j
                  z         t        d      }|j                  |||j                  z         |j	                  |||j                  z         t        d      }|j                  |||j                  z         t        d      }|j                  |d|z  |j                  z         |j                  |      d|j                  |       z  |j                  z  ||j                  |       z   |j                  z  z   k(  sJ y )NrD   r   r   rK   rL   P3r1   )r   rQ   r   r   r   r   r,   r   r   r3   rR   )rS   rH   r   r   r   rK   rL   rV   s           r   'test_auto_point_vel_multiple_point_pathrW      s    AG$FBsAc
AIIaacc	tBJJq"qss(JJq"qss(	tBJJr28	tBJJr27QSS=!66!9RWWQZ!##-bggajACC0GGGGGr!   c                  N   t         j                  } t        d      \  }}}t        d      }t        d      }|j	                  |||j
                  z         t        d      }|j                  |||j                  z         |j                  |      |j                  |       |j                  z  ||j
                  z  z   k(  sJ |j                  |      ||j
                  z  k(  sJ |j	                  |||j                  z         |j                  |      ||j                  z  k(  sJ y )Nz
q1, q2, u1r   rK   )r   rQ   r   r   r   r   r,   r   r3   rR   r   )rS   rH   r   r>   r   r   rK   s          r   test_auto_vel_dont_overwriterY      s    A-JBBsAdAIIaacc	tBJJq"qss(66!9
QSS(283333558rACCxJJq"qss(66!9QSS   r!   c                  D   t        d      \  } }t        d      t        d      t        d      }|j                  | j                  z         t        d      j                  |j                         t        t        fd       t        t        fd       y )NrD   r   Sr   rK   c                  &    j                         S r<   rF   )r   rK   s   r   r?   zRtest_auto_point_vel_if_tree_has_vel_but_inappropriate_pos_vector.<locals>.<lambda>   rN   r!   c                  &     j                        S r<   rF   )rK   r[   s   r   r?   zRtest_auto_point_vel_if_tree_has_vel_but_inappropriate_pos_vector.<locals>.<lambda>   rN   r!   )	r   r   r   r   r   r,   r   r   r@   )rH   r   r   r   rK   r[   s      @@@r   @test_auto_point_vel_if_tree_has_vel_but_inappropriate_pos_vectorr^      su    G$FBsAsAc
AIIaacc	tBJJq!##
:)*
:)*r!   c                     t         j                  } t        d      \  }}}}t        d      }t        d      }|j	                  |||j
                  z         t        d      }|j                  |||j                  z         |j	                  |||j                  z         t        d      }|j                  |||j                  z         t        d      }	|	j                  |d|z  |j                  z         t        d      }
|
j                  |	||j
                  z         t        d	      }|j	                  |||j                  z         t        d
      }|j                  |||j                  z         |
j                  |||j
                  z  ||j                  z  z          t        j                         5  t        j                  d       t        t              5  |
j                  |      |j                  |       |j
                  z  ||j                  z  z   d|j                  |       z  |j                  z  z   k(  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nzq1 q2 u1 u2r   r   rK   rL   rV   r1   P4r   O1errorr   )r   rQ   r   r   r   r   r,   r   r   warningscatch_warningssimplefilterr   UserWarningr3   rR   )rS   rH   r   r>   rA   r   r   rK   rL   rV   r`   r   ra   s                r   !test_auto_point_vel_shortest_pathrg      s   A#M2NBBsAc
AIIaacc	tBJJq"qss(JJq"qss(	tBJJr28	tBJJr27QSS=!	tBJJr28c
AIIaacc	tBJJq"qss(JJr28b133h&'		 	 	" Sg&[) 	S66!9
QSS 028 ;a"''!*nqss>R RRRR	SS S	S 	SS Ss%   7%IA%III	II(c                     t         j                  } t        d      \  }}}}t        d      t        d      }t        d      }|j	                  |j
                  z         t        d      j                  ||j
                  z  ||j                  z  z          t        t        fd       j                  |d||j
                  f       j                        ||j                  |       z   j
                  z  |j                  |       |j                  z  z   ||j                  |       z  |j                  z  z
  k(  sJ y )Nz	q q1 q2 ur   r   r   r   c                  &    j                         S r<   rF   )r   r   s   r   r?   z6test_auto_point_vel_connected_frames.<locals>.<lambda>   s    quuQx r!   r&   )r   rQ   r   r   r   r   r,   r   r   r@   orientr3   rR   r   )	rS   r   rH   r   ur   r   r   r   s	          @@r   $test_auto_point_vel_connected_framesrl      s    A!+.LAr2qsAsAc
AIIaQSSc
AIIaaccBH$%
:'(HHQACC!558BGGAJ!##-
QSS0@@2q	>TUTWTWCWWWWWr!   c                     t        d      \  } }t        d      t        d      t        d      }t        d      }t        d      }|j                  |j                  z         |j                  |j
                  z         |j                  |j                  z         j                  || j                  z         j                  || j
                  z         j                  || j                  z         t        j                         5  t        j                  d       t        t        fd       d d d        y # 1 sw Y   y xY w)	Nzq ur   r   r   r6   Rrb   c                  &    j                         S r<   rF   r   r   s   r   r?   zCtest_auto_point_vel_multiple_paths_warning_arises.<locals>.<lambda>   s    AEE!H r!   )r   r   r   r   r   r   r   r,   rc   rd   re   r   rf   )r   rk   r   r6   rn   r   r   s        @@r   1test_auto_point_vel_multiple_paths_warning_arisesrq      s    % DAqsAc
Ac
Ac
Ac
AIIaQSSIIaACCIIaQSSIIaQSSIIaQSSIIaQSS		 	 	" .g&{,-. . .s   *E		Ec                  L   t        d      } t        d      }t        d      t        d      }t        d      | j                  j                         |j	                  | j                         j	                  |j
                         |j	                  j                         |j	                  |j                  j
                  z          t        j                         5  t        j                  d       t        t        fd       d d d        y # 1 sw Y   y xY w)Nr   rK   rL   rV   r   rb   c                  &    j                         S r<   rF   rP   s   r   r?   z5test_auto_vel_cyclic_warning_arises.<locals>.<lambda>  s    BFF1I r!   )r   r   r   r   r,   r   r   rc   rd   re   r   rf   )r   rK   rV   r   rL   s      @@r   #test_auto_vel_cyclic_warning_arisesrt      s    c
A	tB	tB	tBsAIIaJJq!##JJr133JJr133JJr1339		 	 	" /g&{-./ / /s   '*DD#c                     t        d      } t        d      }t        d      }t        d      }t        d      }| j                  ||j                         |j	                  | |j                         |j	                  ||j
                         |j	                  ||j                         |j	                  ||j                  |j
                  z          t        j                  d      5 }t        j                  d       |j                  |       t        |d	   j                        j                  d
d      }t        |d	   j                  t               sJ d|v sJ 	 d d d        y # 1 sw Y   y xY w)Nr   rK   rL   rV   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   rc   rd   re   r3   strmessagereplace
issubclasscategoryrf   )r   rK   rL   rV   r   wmsgs          r    test_auto_vel_cyclic_warning_msgr     s*   c
A	tB	tB	tBsAIIaJJq!##JJr133JJr133JJr1339		 	 $	/ Y1h'
q	!B%-- ((s3!B%..+666 R  VY  Y  	Y  YY Y Ys   'A4E%%E.c                     t        d      } t        d      }t        d      }t        d      }|j                  | | j                         |j                  | | j                         |j                  || j                         |j                  || j                         t        j                  d      5 }t        j                  d       |j                  |        t        |d   j                        j                  d	d
      }t        |d   j                  t               sJ d|v sJ d|v sJ d|v sJ 	 d d d        y # 1 sw Y   y xY w)Nr   r   r   r6   Trv   rx   ry   rz   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   rc   rd   re   r3   r|   r}   r~   r   r   rf   )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S   8C???w{~~~~  s   3B D==Ec                     t        d      \  } }t        dd      \  }}t        d      }t        d      }t        d      }|j                  ||j                  |        |j	                  |||j                  z         |j                  ||j                  |       |j	                  |||j                  z         t        d      }|j                  |d       t        d	      }|j                  ||j                         |j                  |d       |j                  |d       t        d
      }	|	j                  ||j                         |	j                  |d       |	j                  j                         }
|	j                  |      ||j                  z  ||z   |j                  z  z   k(  sJ |
|	_	        |	j                  |||       |	j                  |      ||j                  z  ||z   |j                  z  z   k(  sJ y )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(   )rH   r   r>   rA   r9   r   r   r   r   r   temps              r   test_auto_vel_derivativer   1  s   F#FBFA&FBsAsAsAMM!QSS"MM!R!##XMM!QSS"MM!R!##X	tBJJq!	tBJJr133JJq!JJq!	tBJJr133JJq!<<D66!9accR"WO3444BLNN2q!66!9accR"WO3444r!   c                      t        d      } t        d      }|j                  | d       |j                  |       d| j                  z  k(  sJ y )Nr   r   r   )r   r   r   accr   rp   s     r   test_auto_point_acc_zero_velr   K  s@    sAc
AIIaO558q133wr!   c                     t         j                  } t        d      }t        d      }t        d      }|j                  ||j                  |       t        d      }|j                  |d       t        d      }|j                  ||j                         |j                  |      |j                  |       dz   |j                  z  |j                  | d      |j                  z  z   k(  sJ y )NrH   r   r9   r   r   r   r   )r   rQ   r   r   r   r   r   r,   r   r   rR   r   )rS   rH   r   r9   r   r   s         r   test_auto_point_acc_compute_velr   Q  s    A		BsAsAMM!QSS"c
AIIaOc
AIIa558
a'!##-10CCCCCr!   c                     t        d      \  } }t        dd      \  }}t        dd      \  }}t        d      }t        d      }t        d      }|j                  ||j                  |        |j                  ||j                  |       t	        d      }	|	j                  |d       t	        d	      }
|
j                  |	|j                         |
j                  |d       |
j                  |d       t	        d
      }|j                  |
|j                         |j                  |d       |
j                  j                         |j                  j                         }}|
j                  j                         |j                  j                         }}|dz   |j                  z  ||j                  z  z   ||z   dz  |j                  z  z
  ||z   |j                  z  z   }|j                  |      |k(  sJ ||c|
_        |_        ||c|
_
        |_
        |
j                  |	||       |j                  |
||       |
j                  |	||       |j                  |
||      |k(  sJ y )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+   )rH   r   r>   rA   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!QSS"MM!QSS"	tBJJq!	tBJJr133JJq!JJq!	tBJJr133JJq!  "||002BLL4E4E4GK!||002BLL4E4E4GK1WHqssNR!##X%bQ(<<R133NE66!9!,kBL",!,kBL",NN2q!NN2q!NN2q!>>"a#u,,,r!   )sympy.physics.vectorr   r   r   sympy.testing.pytestr   r   rc   r    r$   r)   r-   r4   r7   rB   rI   rT   rW   rY   r^   rg   rl   rq   rt   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!   