
    QiU0                         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dS )    )dynamicsymbolsPointReferenceFrame)raisesignore_warningsNc                     t          d          \  } }t          dd          \  }}t          dd          \  }}t          d          }t          d          }|                    |||j        z             t	          d          }|                    d|j                  }	|	                    |d           |                    |d           |	                    |||          ||j	        z  k    sJ |                    ||j                   |	                    |||          |j        ||j	        z  z   k    sJ |	                    ||j                   |	                    |||          |j        |j        z   ||j	        z  z   k    sJ d S 	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/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/sympy/physics/vector/tests/test_point.pytest_point_v1pt_theorysr       si   6""EArVQ''GBvq))ICsAsAMM!R!#Xc

A	CAIIaOOOIIaOOO==Aq!!R!#X----IIa==Aq!!QS28^3333IIa==Aq!!QS13Yac%9999999    c                     t          d          \  } }t          dd          \  }}t          dd          \  }}t          d          }t          d          }|                    |||j        z             t	          d          }|                    d|j                  }	|	                    |d           |                    |d           |	                    |||          |dz   |j        z  ||j	        z  z   k    sJ |	                    |||j        z             |	                    |||          |dz   |j        z  ||j	        z  z   ||j        z  z   k    sJ |                    |||j        z             |	                    |||          ||dz  z
  |j        z  ||z  |z   |j	        z  z   ||j        z  z   k    sJ d S 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OOOIIaOOO==Aq!!r1uX^cACi%?????IIaqs==Aq!!r1uX^cACi%?$*%LLLLLIIaqs==Aq!!tb!e|qs&:cBhnPQPS=S&S#acz'* + + + + + +r!   c                  n   t          d          } t          dd          }t          d          }|                    dd| |j        g          }t	          d          }|                    dd          }|                    |d           |                    |||          dk    sJ |                    d|j                  }|                    |||          ||j        z  |j        z  k    sJ |                    ||j                   |                    |||          |j        ||j	        z  z   k    sJ d S )	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!QS**Ac

A	CAIIaOOO==Aq!!Q&&&&	CA==Aq!!b13hn5555IIa==Aq!!QS28^333333r!   c                     t          d          } t          dd          }t          dd          }t          d          }|                    dd| |j        g          }t	          d          }|                    dd	          }|                    |d	           |                    |||          d	k    sJ |                    ||j	                   |                    |||          |dz   |j	        z  ||j
        z  z   k    sJ d S )
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!QS**Ac

A	CAIIaOOO==Aq!!Q&&&&IIa==Aq!!r1uf^sack%AAAAAAAr!   c                     t          d          \  } }t          dd          \  }}t          dd          \  }}t          d          }t          d          }|                    |d|j        z             t	          d          }|                    d| |j        z  ||j        z  z             }	|	                    |          | |j        z  ||j        z  z   k    sJ |	                    |||j        z  ||j        z  z              |		                    |          ||j        z  ||j        z  z   k    sJ |                    |d	           |	                    |          d	k    sJ |	
                    |||          d
| z  |z   |j        z  ||j        z  z   d|z  |j        z  z   k    sJ |                    dd| |j        g          }t	          d          }|                    dd|j        z            }	|                    |d|j        z             |	                    |          d|j        z  k    sJ |	                    |||          d|dz  z  |j        z  d|z  |j        z  z   k    sJ |                    |d|j        z             t	          d          }|                    d| |j        z  ||j        z  z             }	|	                    |||j        z  ||j        z  z              |                    |d	           |	                    |||          ||j        z  ||j        z  z   d| z  |j        z  z
  k    sJ d S )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QS28+,,A::a==AGb13h.....IIaacC!#I%&&&5588rACx#)+++++IIaOOO5588q======Aq!!sQw}&;tqsl&J #bAC/'0 1 1 1 1 	
C!QS**Ac

A	Cac""AIIaQS5588q13w==Aq!!cBEkQS%8BH;K%KKKKKMM!QWc

A	CQS28+,,AIIaacC!#I%&&&IIaOOO==Aq!!R!#Xac	%9AEACK%GGGGGGGr!   c                     t          d          } t          d          }|                    dd| |j        g          }t	          d          }|                    dd|j        z  d|j        z  z             }|                    |          d|j        z  d|j        z  z   k    sJ |                    d	d|j        z  d|j        z  z             }|                    |          d|j        z  d|j        z  z   k    sJ |                    |          d|j        z  d|j        z  z   d|j        z  z   d|j        z  z   k    sJ |                    |          d
|j        z  d|j        z  z
  d|j        z  z
  d|j        z  z
  k    sJ d S )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   sl   sAsA	C!QS**Ac

A	CacAG+,,A::a==BHq13w.....	CacAG+,,A::a==BHq13w.....::a==BHrACx/!ac'9AGCCCCC::a==C!#IQS01qs7:QWDDDDDDDr!   c                     t          d          } t          d          t          d          t          d          \  }                    | j        z  || j        z  z                                  |           j        k    sJ                     | |          j        | j        fk    sJ t          t          fd           d S )Nr   Apzu1, u2c                  0                                    S N)partial_velocity)r9   r:   u1s   r   <lambda>z-test_point_partial_velocity.<locals>.<lambda>   s    q11!R8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acBH$%%%a$$++++aR((QS!#J6666
:88888899999r!   c                     t          d          \  } }t          d          t          d          t          d          t          d                              | j        z             t          t          fd                               |j        z             	                              |j        z  k    sJ t          t          fd           d S )Nq1 q2r   r   r6   r   c                  .                                    S r<   r3   )r   r6   s   r   r?   z test_point_vel.<locals>.<lambda>   s    a r!   c                  .                                    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ac
:((((()))IIaac5588rACx
:)))))*****r!   c                     t           j        } t          d          \  }}t          d          t          d          t          d          }t          d          }|                    ||j        z             |                    |j        z             |                              |	                    |           j        z  |j        z  z   k    sJ t          d          }|                    ||j        z             t          d                              ||j
        z             t          t          fd           t          t          fd	           d S )
NrD   r   r   r   r6   P1P2c                  .                                    S r<   rF   )r   rL   s   r   r?   z%test_auto_point_vel.<locals>.<lambda>       q		 r!   c                  .                                    S r<   rF   r   rL   s   r   r?   z%test_auto_point_vel.<locals>.<lambda>   s    rvvayy 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      sC   AG$$FBsAsAc

Ac

AIIaacIIaac5588rwwqzzAC'"qs(22222	tBJJq"qs(	tBJJr28
:)))))***
:((((()))))r!   c                     t           j        } t          d          \  }}t          d          }t          d          }|                    |||j        z             t          d          }|                    |||j        z             |                    |||j        z             t          d          }|                    |||j        z             t          d          }|                    |d|z  |j        z             |	                    |          d|
                    |           z  |j        z  ||
                    |           z   |j        z  z   k    sJ d S )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ac	tBJJq"qs(JJq"qs(	tBJJr28	tBJJr27QS=!!!66!99RWWQZZ!#-bggajjAC0GGGGGGGGr!   c                  `   t           j        } t          d          \  }}}t          d          }t          d          }|                    |||j        z             t          d          }|                    |||j        z             |                    |          |	                    |           |j        z  ||j        z  z   k    sJ |                    |          ||j        z  k    sJ |                    |||j
        z             |                    |          ||j
        z  k    sJ d S )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ac	tBJJq"qs(66!99

QS(28333335588rACxJJq"qs(66!99QS      r!   c                  ~   t          d          \  } }t          d          t          d          t          d          }|                    | j        z             t          d                              |j                   t          t          fd           t          t          fd           d S )NrD   r   Sr   rK   c                  .                                    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                  .                                    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^      s    G$$FBsAsAc

AIIaac	tBJJq!#
:)))))***
:)))))*****r!   c                     t           j        } t          d          \  }}}}t          d          }t          d          }|                    |||j        z             t          d          }|                    |||j        z             |                    |||j        z             t          d          }|                    |||j        z             t          d          }	|	                    |d|z  |j        z             t          d          }
|
                    |	||j        z             t          d	          }|                    |||j        z             t          d
          }|                    |||j        z             |
                    |||j        z  ||j        z  z              t          j
                    5  t          j        d           t          t                    5  |
                    |          |                    |           |j        z  ||j        z  z   d|                    |           z  |j        z  z   k    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )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22NBBsAc

AIIaac	tBJJq"qs(JJq"qs(	tBJJr28	tBJJr27QS=!!!	tBJJr28c

AIIaac	tBJJq"qs(JJr28b13h&'''		 	"	" S Sg&&&[)) 	S 	S66!99

QS 028 ;a"''!**nqs>R RRRRRR	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	SS S S S S S S S S S S S S S S S S Ss7   )I91A#I!I9!I%	%I9(I%	)I99I= I=c                     t           j        } t          d          \  }}}}t          d          t          d          }t          d          }|                    |j        z             t          d                              ||j        z  ||j        z  z              t          t          fd           
                    |d||j        f                                         ||                    |           z   j        z  |                    |           |j        z  z   ||                    |           z  |j        z  z
  k    sJ d S )Nz	q q1 q2 ur   r   r   r   c                  .                                    S r<   rF   )r   r   s   r   r?   z6test_auto_point_vel_connected_frames.<locals>.<lambda>   s    quuQxx 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      s1   A!+..LAr2qsAsAc

AIIaQSc

AIIaacBH$%%%
:'''''(((HHQAC!!!5588BGGAJJ!#-

QS0@@2q		>TUTWCWWWWWWWWr!   c                     t          d          \  } }t          d          t          d          t          d          }t          d          }t          d          }|                    |j        z             |                    |j        z             |                    |j        z                                 || j        z                                 || j        z                                 || j        z             t          j	                    5  t          j
        d           t          t          fd           d d d            d S # 1 swxY w Y   d S )	Nzq ur   r   r   r6   Rrb   c                  .                                    S r<   rF   r   r   s   r   r?   zCtest_auto_point_vel_multiple_paths_warning_arises.<locals>.<lambda>   s    AEE!HH 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QSIIaACIIaQSIIaQSIIaQSIIaQS		 	"	" . .g&&&{,,,,,---. . . . . . . . . . . . . . . . . .s   '.E""E&)E&c                  p   t          d          } t          d          }t          d          t          d          }t          d          |                     j                   |                    | j                                       |j                   |                    j                   |                    |j        j        z              t          j                    5  t          j	        d           t          t          fd           d d d            d S # 1 swxY w Y   d S )Nr   rK   rL   rV   r   rb   c                  .                                    S r<   rF   rP   s   r   r?   z5test_auto_vel_cyclic_warning_arises.<locals>.<lambda>  s    BFF1II 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      sR   c

A	tB	tB	tBsAIIaJJq!#JJr13JJr13JJr139		 	"	" / /g&&&{-----.../ / / / / / / / / / / / / / / / / /s   0.D++D/2D/c                     t          d          } t          d          }t          d          }t          d          }t          d          }|                     ||j                   |                    | |j                   |                    ||j                   |                    ||j                   |                    ||j        |j        z              t          j        d          5 }t          j	        d           |
                    |           t          |d	         j                                      d
d          }t          |d	         j        t                     sJ d|v sJ 	 d d d            d S # 1 swxY w Y   d S )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!#JJr13JJr13JJr139		 $	/	/	/ Y1h'''
q			!B%-  ((s33!B%.+66666 R  VY  Y  Y  Y  Y  YY Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Ys   0B E>>FFc                     t          d          } t          d          }t          d          }t          d          }|                    | | j                   |                    | | j                   |                    || j                   |                    || j                   t          j        d          5 }t          j	        d           |
                    |            t          |d         j                                      d	d
          }t          |d         j        t                     sJ d|v sJ d|v sJ d|v sJ 	 d d d            d S # 1 swxY w Y   d S )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3!B%.+66666S    8C????w{~~~~~~                 s   >BEEEc                  :   t          d          \  } }t          dd          \  }}t          d          }t          d          }t          d          }|                    ||j        |            |                    |||j        z             |                    ||j        |           |                    |||j        z             t          d          }|                    |d           t          d	          }|                    ||j                   |                    |d           |                    |d           t          d
          }	|	                    ||j                   |	                    |d           |	j	        
                                }
|	                    |          ||j        z  ||z   |j        z  z   k    sJ |
|	_	        |	                    |||           |	                    |          ||j        z  ||z   |j        z  z   k    sJ d S )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!QS"MM!R!#XMM!QS"MM!R!#X	tBJJq!	tBJJr13JJq!JJq!	tBJJr13JJq!<D66!99acR"WO34444BLNN2q!66!99acR"WO3444444r!   c                      t          d          } t          d          }|                    | d           |                    |           d| j        z  k    sJ d S )Nr   r   r   )r   r   r   accr   rp   s     r   test_auto_point_acc_zero_velr   K  sR    sAc

AIIaOOO5588q13wr!   c                      t           j        } t          d          }t          d          }t          d          }|                    ||j        |           t          d          }|                    |d           t          d          }|                    ||j                   |	                    |          |
                    |           dz   |j        z  |
                    | d          |j        z  z   k    sJ d S )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!QS"c

AIIaOOOc

AIIa5588

a'!#-10CCCCCCCCr!   c                  $   t          d          \  } }t          dd          \  }}t          dd          \  }}t          d          }t          d          }t          d          }|                    ||j        |            |                    ||j        |           t	          d          }	|	                    |d           t	          d	          }
|
                    |	|j                   |
                    |d           |
                    |d           t	          d
          }|                    |
|j                   |                    |d           |
j        	                                |j        	                                }}|
j
        	                                |j
        	                                }}|dz   |j        z  ||j        z  z   ||z   dz  |j        z  z
  ||z   |j        z  z   }|                    |          |k    sJ ||c|
_        |_        ||c|
_
        |_
        |
                    |	||           |                    |
||           |
                    |	||           |                    |
||          |k    sJ d S )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!QS"MM!QS"	tBJJq!	tBJJr13JJq!JJq!	tBJJr13JJq!  "|0022BL4E4E4G4GK!|0022BL4E4E4G4GK1WHqsNR!#X%bQ(<<R13NE66!99!,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 F F F F F F F F 8 8 8 8 8 8 8 8 : : :$+ + +&4 4 4B B BH H H@
E 
E 
E: : :
+ 
+ 
+* * *$H H H! ! !	+ 	+ 	+S S S2X X X. . ."/ / /Y Y Y$  $5 5 54  D D D -  -  -  -  -r!   