o
    GZŽh‡R  ã                   @   sZ  d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZmZmZmZ d dlmZmZmZmZmZmZmZmZmZ d d	lmZ d d
lmZ edƒ\Z Z!Z"Z#Z$edƒZ%e% &dde e%j'g¡Z(e( &dde!e(j)g¡Z*e* &dde"e*j+g¡Z,dd„ Z-dd„ Z.dd„ Z/dd„ Z0dd„ Z1dd„ Z2dd„ Z3dd „ Z4d!d"„ Z5d#d$„ Z6d%d&„ Z7d'S )(é    )Úpi)ÚS)Úsymbols)Úsqrt)ÚcosÚsin)ÚIntegral)ÚDyadicÚPointÚReferenceFrameÚVector)	ÚcrossÚdotÚexpressÚtime_derivativeÚkinematic_equationsÚouterÚpartial_velocityÚget_motion_paramsÚdynamicsymbols)Útrigsimp)Úraiseszq1 q2 q3 q4 q5ÚNÚAÚAxisÚBÚCc                   C   sÊ   t tjtjƒdksJ ‚t tjtjƒdksJ ‚t tjtjƒdks!J ‚t tjtjƒdks,J ‚t tjtjƒdks7J ‚t tjtjƒdksBJ ‚t tjtjƒdksMJ ‚t tjtjƒdksXJ ‚t tjtjƒdkscJ ‚d S )Né   r   )r   r   ÚxÚyÚz© r!   r!   úX/var/www/auris/lib/python3.10/site-packages/sympy/physics/vector/tests/test_functions.pyÚtest_dot   s   r#   c                   C   sT  t tjtjƒttƒksJ ‚t tjtjƒttƒ ksJ ‚t tjtjƒdks&J ‚t tjtjƒttƒks3J ‚t tjtjƒttƒks@J ‚t tjtjƒdksKJ ‚t tjtjƒdksVJ ‚t tjtjƒdksaJ ‚t tjtjƒdkslJ ‚t	t tjtjtj ƒƒt
dƒtttd  ƒ ks†J ‚t	t tjtjtj ƒƒt	t tjtj tjƒƒks J ‚t tjtjƒttƒks­J ‚t tjtjƒdks¸J ‚t tjtjƒttƒksÅJ ‚t tjtjƒttƒttƒ ksÖJ ‚t tjtjƒttƒksãJ ‚t tjtjƒttƒ ttƒ ksõJ ‚t tjtjƒttƒ ttƒ ksJ ‚t tjtjƒttƒksJ ‚t tjtjƒttƒttƒ ks(J ‚d S )Nr   r   é   é   )r   r   r   r   r   Úq1r   r   r    r   r   r   r   Úq3Úq2r!   r!   r!   r"   Útest_dot_different_frames%   s(   44"$&(r)   c                   C   sÜ   t tjtjƒdksJ ‚t tjtjƒtjksJ ‚t tjtjƒtj ks$J ‚t tjtjƒtj ks1J ‚t tjtjƒdks<J ‚t tjtjƒtjksHJ ‚t tjtjƒtjksTJ ‚t tjtjƒtj ksaJ ‚t tjtjƒdkslJ ‚d S ©Nr   )r   r   r   r   r    r!   r!   r!   r"   Ú
test_cross>   s   r+   c                   C   sÌ  t tjtjƒttƒtj ksJ ‚t tjtjƒttƒtj ks J ‚t tjtjƒttƒ tj ttƒtj  ks8J ‚t tjtjƒttƒ tj ksIJ ‚t tjtjƒttƒtj ksYJ ‚t tjtjƒttƒtj ttƒtj  kspJ ‚t tjtjƒtjks|J ‚t tjtjƒtj ks‰J ‚t tjtjƒdks”J ‚t tjtjƒttƒtj ks¤J ‚t tjtjƒttƒtj ks´J ‚t tjtjtj ƒttƒtj ttƒtj  ksÎJ ‚t tjtj tjƒttƒ tj ttƒtj  kséJ ‚t tjt	jƒtt
ƒt	j ksùJ ‚t tjt	jƒtt
ƒ t	j tt
ƒt	j  ksJ ‚t tjt	jƒtt
ƒ t	j ks$J ‚t t	jtjƒtt
ƒ t	j ks6J ‚t t	jtjƒ t	¡ ¡ tt
ƒt	j tt
ƒt	j  ksSJ ‚t t	jtjƒtt
ƒt	j ksdJ ‚d S r*   )r   r   r   r   r   r&   r    r   r   r   r'   r   Úsimplifyr!   r!   r!   r"   Útest_cross_different_framesL   s&     0" .  46 2$$:&r-   c                     s˜  t dƒ} | j| j ‰ˆˆB ‰ tdƒ‰tdƒ‰ˆ ˆ @ tˆ ˆ ƒks!J ‚ˆ ˆ@ tˆ ˆƒks,J ‚ˆˆ @ tˆˆ ƒks7J ‚ˆ ˆ@ tˆ ˆƒksBJ ‚ˆˆ @ tˆˆ ƒksMJ ‚ˆ ˆ@ tˆ ˆƒksXJ ‚ˆˆ @ tˆˆ ƒkscJ ‚tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ ˆˆ@ tˆˆƒks’J ‚ˆˆ@ tˆˆƒksJ ‚ˆˆ@ tˆˆƒks¨J ‚tt‡fdd„ƒ tt‡fd	d„ƒ tt‡fd
d„ƒ tt‡fdd„ƒ tt‡ fdd„ƒ tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ ˆ ˆA tˆ ˆƒksôJ ‚ˆˆ A tˆˆ ƒksÿJ ‚ˆ ˆA tˆ ˆƒksJ ‚ˆˆ A tˆˆ ƒksJ ‚ˆˆ A tˆˆ ƒks#J ‚tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ ˆˆA tˆˆƒksSJ ‚ˆˆA tˆˆƒks_J ‚ˆˆA tˆˆƒkskJ ‚tt‡fdd„ƒ tt‡fdd„ƒ tt‡fdd„ƒ tt‡fdd„ƒ tt‡ fdd„ƒ tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ tt‡ fdd„ƒ tt‡ fd d„ƒ tt‡ fd!d„ƒ tt‡ fd"d„ƒ ˆˆB t	ˆˆƒksJ ‚ˆˆB t	ˆˆƒksJ ‚ˆˆB t	ˆˆƒks&J ‚tt‡fd#d„ƒ tt‡fd$d„ƒ tt‡fd%d„ƒ tt‡fd&d„ƒ d'S )(zUTest that the output of dot, cross, outer functions match
    operator behavior.
    r   r   c                      ó   t ˆ tjƒS ©N©r   r   ÚZeror!   ©Údr!   r"   Ú<lambda>u   ó    z%test_operator_match.<locals>.<lambda>c                      ó   t tjˆ ƒS r/   r0   r!   r2   r!   r"   r4   v   r5   c                      ó
   t ˆ dƒS r*   ©r   r!   r2   r!   r"   r4   w   ó   
 c                      ó
   t dˆ ƒS r*   r8   r!   r2   r!   r"   r4   x   r9   c                      r.   r/   r0   r!   ©Úvr!   r"   r4   |   r5   c                      r6   r/   r0   r!   r;   r!   r"   r4   }   r5   c                      r7   r*   r8   r!   r;   r!   r"   r4   ~   r9   c                      r:   r*   r8   r!   r;   r!   r"   r4      r9   c                      ó
   t ˆ ˆ ƒS r/   ©r   r!   r2   r!   r"   r4   ‚   r9   c                      ó
   t ˆ ˆƒS r/   r>   r!   ©r3   Úzerodr!   r"   r4   ƒ   r9   c                      ó
   t ˆˆ ƒS r/   r>   r!   r@   r!   r"   r4   „   r9   c                      r.   r/   ©r   r   r1   r!   r2   r!   r"   r4   Š   r5   c                      r6   r/   rC   r!   r2   r!   r"   r4   ‹   r5   c                      r7   r*   r>   r!   r2   r!   r"   r4   Œ   r9   c                      r:   r*   r>   r!   r2   r!   r"   r4      r9   c                      r.   r/   rC   r!   r;   r!   r"   r4   ‘   r5   c                      r6   r/   rC   r!   r;   r!   r"   r4   ’   r5   c                      r7   r*   r>   r!   r;   r!   r"   r4   “   r9   c                      r:   r*   r>   r!   r;   r!   r"   r4   ”   r9   c                      r=   r/   ©r   r!   r2   r!   r"   r4   —   r9   c                      r?   r/   rD   r!   r@   r!   r"   r4   ˜   r9   c                      rB   r/   rD   r!   r@   r!   r"   r4   ™   r9   c                      r?   r/   rD   r!   ©r3   r<   r!   r"   r4   š   r9   c                      rB   r/   rD   r!   rE   r!   r"   r4   ›   r9   c                      r?   r/   rD   r!   ©r3   Úzerovr!   r"   r4   œ   r9   c                      rB   r/   rD   r!   rF   r!   r"   r4      r9   c                      rB   r/   rD   r!   rF   r!   r"   r4   ž   r9   c                      r.   r/   ©r   r   r1   r!   r2   r!   r"   r4   Ÿ   r5   c                      r6   r/   rH   r!   r2   r!   r"   r4       r5   c                      r7   r*   rD   r!   r2   r!   r"   r4   ¡   r9   c                      r:   r*   rD   r!   r2   r!   r"   r4   ¢   r9   c                      r.   r/   rH   r!   r;   r!   r"   r4   ¦   r5   c                      r6   r/   rH   r!   r;   r!   r"   r4   §   r5   c                      r7   r*   rD   r!   r;   r!   r"   r4   ¨   r9   c                      r:   r*   rD   r!   r;   r!   r"   r4   ©   r9   N)
r   r   r   r   r	   r   r   Ú	TypeErrorr   r   )r   r!   )r3   r<   rA   rG   r"   Útest_operator_matchc   sz   rJ   c                   C   sH  t tdƒtƒtdƒksJ ‚t tjtƒtju sJ ‚t tjtƒtt	ƒtj t
t	ƒtj  ks.J ‚t tjtƒt
tƒt
t	ƒ tj ttƒtj  t
tƒtt	ƒ tj  ksSJ ‚t tjtƒt
t	ƒ ttƒ tj t
tƒtj  ttƒtt	ƒ tj  ksyJ ‚t tjtƒttƒtj t
tƒtj  ksJ ‚t tjtƒt
tƒ tj ttƒtj  ks¦J ‚t tjtƒtjks±J ‚t tjtƒtjks¼J ‚t tjtƒtjksÇJ ‚t tjtƒtjksÒJ ‚t tjtƒtjksÝJ ‚t tjtƒttƒtj t
tƒtj  ksóJ ‚t tjtƒt
tƒtj ttƒtj  ks
J ‚t tjtƒtt	ƒtj t
t	ƒtj  ks!J ‚t tjtƒt
tƒt
t	ƒ tj ttƒtj  t
tƒtt	ƒ tj  ksGJ ‚t tjtƒt
t	ƒ ttƒ tj t
tƒtj  ttƒtt	ƒ tj  ksnJ ‚t tjtƒtjkszJ ‚t tjtƒtjks†J ‚t tjtƒtjks’J ‚t tjtƒttƒtj t
tƒtj  ks©J ‚t tjtƒt
tƒtj ttƒtj  ksÀJ ‚t tjtƒtjksÌJ ‚t tjtƒttƒtj t
tƒttƒ tj  t
tƒt
tƒ tj  ksòJ ‚t tjtƒt
tƒtj ttƒttƒ tj  t
tƒttƒ tj  ksJ ‚t tjtƒt
tƒtj ttƒtj  ks/J ‚t tjtƒttƒtt	ƒ t
tƒt
tƒ t
t	ƒ  tj t
tƒttƒ tj  t
t	ƒttƒ t
tƒt
tƒ tt	ƒ  tj  ksqJ ‚t tjtƒt
tƒtt	ƒ t
tƒt
t	ƒ ttƒ  tj ttƒttƒ tj  t
tƒt
t	ƒ t
tƒttƒ tt	ƒ  tj  ks³J ‚t tjtƒt
t	ƒ ttƒ tj t
tƒtj  ttƒtt	ƒ tj  ksÚJ ‚t tjtƒttƒtj t
tƒtj  ksñJ ‚t tjtƒt
tƒ tj ttƒtj  ks	J ‚t tjtƒtjksJ ‚t tjtƒtjks!J ‚t tjtƒtjks-J ‚t tjtƒtjks9J ‚t tjtƒtjksEJ ‚t tjtƒttƒtj t
tƒtj  ks\J ‚t tjtƒt
tƒtj ttƒtj  kssJ ‚t tjtƒtt	ƒtj t
t	ƒtj  ksŠJ ‚t tjtƒt
tƒt
t	ƒ tj ttƒtj  t
tƒtt	ƒ tj  ks°J ‚t tjtƒt
t	ƒ ttƒ tj t
tƒtj  ttƒtt	ƒ tj  ks×J ‚t tjtƒttƒtj t
tƒtj  ksîJ ‚t tjtƒt
tƒ ttƒ tj ttƒttƒ tj  t
tƒtj  ksJ ‚t tjtƒt
tƒt
tƒ tj t
tƒttƒ tj  ttƒtj  ks;J ‚t tjtƒtjksGJ ‚t tjtƒttƒtj t
tƒtj  ks^J ‚t tjtƒt
tƒ tj ttƒtj  ksvJ ‚t tjtƒtjks‚J ‚t tjtƒtjksŽJ ‚t tjtƒtjksšJ ‚t tjtƒtt	ƒtj t
t	ƒtj  ks±J ‚t tjtƒtjks½J ‚t tjtƒt
t	ƒ tj tt	ƒtj  ksÕJ ‚t tjtƒttƒtt	ƒ t
tƒt
tƒ t
t	ƒ  tj t
tƒtt	ƒ t
tƒt
t	ƒ ttƒ  tj  t
t	ƒttƒ tj  ksJ ‚t tjtƒt
tƒ ttƒ tj ttƒttƒ tj  t
tƒtj  ks>J ‚t tjtƒt
t	ƒttƒ t
tƒt
tƒ tt	ƒ  tj t
tƒt
t	ƒ t
tƒttƒ tt	ƒ  tj  ttƒtt	ƒ tj  ks€J ‚t tjtƒtt	ƒtj t
tƒt
t	ƒ tj  t
t	ƒttƒ tj  ks¦J ‚t tjtƒttƒtj t
tƒtj  ks½J ‚t tjtƒt
t	ƒtj t
tƒtt	ƒ tj  ttƒtt	ƒ tj  ksãJ ‚t tjtƒtt	ƒtj t
t	ƒtj  ksúJ ‚t tjtƒtjksJ ‚t tjtƒt
t	ƒtj tt	ƒtj  ksJ ‚t tjtƒtjks)J ‚t tjtƒtjks5J ‚t tjtƒtj  krHtjksKJ ‚ J ‚tjt ttƒtj t
tƒtj  tƒ ¡ ksdJ ‚tjt t
tƒtj ttƒtj  tƒ ¡ ks}J ‚tjt ttƒtj t
tƒttƒ tj  t
tƒt
tƒ tj  tƒ ¡ ks¥J ‚tjt t
tƒtj ttƒttƒ tj  t
tƒttƒ tj  tƒ ¡ ksÍJ ‚tjt t
tƒtj ttƒtj  tƒ ¡ ksæJ ‚	 tjt ttƒtj t
tƒtj  tƒ ¡ ks J ‚tjt t
tƒ tj ttƒtj  tƒ ¡ ksJ ‚tjt ttƒtj t
tƒtj  tƒ ¡ ks3J ‚tjt t
tƒtj ttƒtj  tƒ ¡ ksLJ ‚tjt tt	ƒtj t
t	ƒtj  tƒ ¡ kseJ ‚tjt t
tƒt
t	ƒ tj ttƒtj  t
tƒtt	ƒ tj  tƒ ¡ ksJ ‚tjt t
t	ƒ ttƒ tj t
tƒtj  ttƒtt	ƒ tj  tƒ ¡ ks¶J ‚tjt ttƒtj t
tƒtj  tƒ ¡ ksÏJ ‚tjt t
tƒ ttƒ tj ttƒttƒ tj  t
tƒtj  tƒ ¡ ksøJ ‚tjt t
tƒt
tƒ tj t
tƒttƒ tj  ttƒtj  tƒ ¡ ks J ‚tjt ttƒtj t
tƒtj  tƒ ¡ ks9J ‚tjt t
tƒ tj ttƒtj  tƒ ¡ ksSJ ‚tjt tt	ƒtj t
t	ƒtj  tƒ ¡ kslJ ‚tjt t
t	ƒ tj tt	ƒtj  tƒ ¡ ks†J ‚	 tjt tt	ƒtj t
tƒt
t	ƒ tj  t
t	ƒttƒ tj  tƒ ¡ ks¯J ‚tjt ttƒtj t
tƒtj  tƒ ¡ ksÈJ ‚tjt t
t	ƒtj t
tƒtt	ƒ tj  ttƒtt	ƒ tj  tƒ ¡ ksðJ ‚tjt tt	ƒtj t
t	ƒtj  tƒ ¡ k	s	J ‚tjt t
t	ƒtj tt	ƒtj  tƒ ¡ k	s"J ‚d S r*   )r   r   r   r   r1   r   r   r   r   r'   r   r    r   r(   r&   r   r,   r!   r!   r!   r"   Útest_express¬   sŽ  ,,
ÿ.
ÿ,.,..,ÿ.ÿ..,ÿ,ÿ.
,ÿ,þ
ÿ
,ÿ,þ
ÿ.ÿ.0...,ÿ.ÿ. ÿÿÿÿ.0.0
,,ÿþ
ÿ
:
ÿ
,,ÿþ
ÿ,ÿ.,ÿ..,22(ÿÿ
ÿ(ÿÿ
ÿ224222(ÿÿ
ÿ*ÿÿ
ÿ2ÿÿÿ
ÿÿÿÿ
ÿ2424(ÿÿ
ÿ2(ÿÿ
ÿ26rK   c                     sÈ  t dƒ} tdƒ}tddƒ}|  dd|| jg¡‰ | j| jB }t|ˆ ƒ| | j| jB  | | j| jB   ks6J ‚| jˆ jB }t|| ƒ| | jˆ jB  ksLJ ‚t|ˆ ƒ| | jˆ jB  ks\J ‚| jˆ jB }t|| ƒ|| jˆ jB  ksqJ ‚t|ˆ ƒ| | jˆ jB  ksJ ‚| jˆ jB }t|| ƒdksJ ‚t|ˆ ƒ| | jˆ jB  ks J ‚tdƒ\}}}	}
tddƒ\}}}}tddƒ\}}}}ˆ  d	d|
ˆ jg¡‰|| j }|| j |	ˆ j  }|| j || j  |	| j  }tˆ jˆƒdksìJ ‚tˆ jˆƒ| ˆ j ksúJ ‚tˆ jˆƒ|ˆ j ksJ ‚t|ˆ ƒ|| j ksJ ‚t|ˆƒ| t|ƒ | | j |t|ƒ | | j  || j  ks9J ‚t|| ƒ|| j |	| ˆ j  |ˆ j  ksRJ ‚t|ˆƒ|| j || | j  |t|ƒ | | j  |ˆ j  |	| ˆ j  ks}J ‚t|ˆ ƒ|| | | j | | | | j  || j  ksJ ‚t|ˆƒ| | j| jB  t|ƒ| | j| jB   || j| jB   t|ƒ| | j| jB   ksÎJ ‚t	t
‡ ‡fd
d„ƒ t	t
‡ ‡fdd„ƒ d S )Nr   Úqr   r   r   r   zq1 q2 q3 q4r$   r   c                      ó   t ˆ jˆddS )Nç      à?©Úorder©r   r   r!   ©r   r   r!   r"   r4   }  ó    z&test_time_derivative.<locals>.<lambda>c                      rM   )NéÿÿÿÿrO   rQ   r!   rR   r!   r"   r4   ~  rS   )r   r   Ú	orientnewr    r   r   r   r   r   r   Ú
ValueError)r   rL   Zqdr3   Zd1Zd2Zd3r&   r(   r'   Úq4Úq1dÚq2dÚq3dZq4dZq1ddZq2ddZq3ddZq4ddÚv1Úv2Zv3r!   rR   r"   Útest_time_derivativeV  sn   

ÿ    
ÿÿ2ÿÿÿÿÿÿÿÿr]   c                  C   sü  t j} tdƒ\}}}tdƒ\}}}tdƒ\}}}	tdƒ\}
}t dƒ\}}}t ddƒ\}}}t ddƒ\}}}|tj |tj  |tj  }|tj |tj  |	tj  }|tj |tj  |tj  }|tj |tj  |tj  }|tj |tj  |tj  }|tj |tj  |tj  }ttdd	ks˜J ‚tt|d
dd|fks¥J ‚tt|d
|||fks²J ‚tt|dd|||  fksÁJ ‚tt|||
dd|||| |
   fksÖJ ‚tt|||
d}d|||  ||
  | | |
¡ f}||ksõJ ‚tt|||
d}t	|| |
| fƒtj t	|| |
| fƒtj  t	|| |
| fƒtj  }|||| f}||ks,J ‚tt|d|||  || d  d fksBJ ‚tt||||
|d||||   ||  | |
 || d  d  || |
  ||
d  d  | |||    | | |
¡ fksƒJ ‚tt||||
|d||||   ||  | |
 | || d  d  || |
  ||
d  d  | |||    fksÀJ ‚tt|tj |tj |tj |
|d}t	|| || fƒ}|tj || tj |t	|| | |
| fƒ tj f}||ksüJ ‚d S )Nzs1 s2 s3zS1 S2 S3zS4 S5 S6zt1 t2za b cr   r$   )Úframe©r   r   r   )Úpositionr   )Úvelocity)ra   r`   Ú
timevalue1)Úacceleration)rc   ra   r`   rb   Z
timevalue2)
r   Z_tr   r   r   r   r    r   Úsubsr   )ÚtÚs1Ús2Zs3ZS1ZS2ZS3ZS4ZS5ZS6Út1Út2ÚaÚbÚcÚadZbdÚcdZa2dZb2dZc2dZv0Zv01r[   r\   Zv2dZv2ddZanswerZanswer_expectedZintegral_vectorÚi1r!   r!   r"   Útest_get_motion_methods  s†   ÿ"*ÿ

ÿÿ$ÿÿ
þÿ
þÿ
ÿÿþÿ
þÿÿrp   c               	      sV  t dƒ\‰ ‰‰‰t ddƒ\} }}}t dƒ\‰‰‰tˆˆˆgˆˆˆgddƒ}|tˆˆˆgˆˆˆgddƒks6J ‚tˆˆˆgˆ ˆˆˆgdƒ}|dˆ  ˆ d	ˆ ˆ  d	ˆ ˆ  | dˆ  ˆ d	ˆ ˆ  d	ˆ ˆ  | dˆ  ˆ d	ˆ ˆ  d	ˆ ˆ  | d	ˆ ˆ d	ˆ ˆ  d	ˆ ˆ  |  gks•J ‚tt‡ ‡‡‡‡‡fd
d„ƒ tt‡ ‡‡‡‡‡‡fdd„ƒ tt‡ ‡‡‡‡‡‡fdd„ƒ tt‡ ‡‡‡‡fdd„ƒ tt‡ ‡‡‡‡fdd„ƒ tt‡ ‡‡‡fdd„ƒ tt‡ ‡‡‡‡‡‡fdd„ƒ tt‡ ‡‡‡‡‡‡fdd„ƒ tt‡ ‡‡‡‡‡fdd„ƒ tg d¢ˆ ˆˆgdƒtjtjtjgks)J ‚d S )Nzq0 q1 q2 q3r   zu1 u2 u3Úbodyi9  Z313Ú
quaterniong      à¿rN   c                      s   t ˆˆˆgˆ ˆˆgdƒS ©Nrr   ©r   r!   ©Úq0r&   r(   Úu1Úu2Úu3r!   r"   r4   Å  s    ztest_kin_eqs.<locals>.<lambda>c                      s   t ˆˆˆgˆ ˆˆˆgddƒS )Nrr   Z123rt   r!   ©rv   r&   r(   r'   rw   rx   ry   r!   r"   r4   Æ  s    c                      ó   t ˆˆˆgˆ ˆˆˆgdƒS )NZfoort   r!   rz   r!   r"   r4   Ç  ó    c                      s   t ˆˆ ˆˆˆgdƒS rs   rt   r!   ©rv   r&   r(   r'   rw   r!   r"   r4   È  s    c                      s   t ˆgˆ ˆˆˆgdƒS rs   rt   r!   r}   r!   r"   r4   É  s    c                      s   t ˆˆˆgˆ dƒS rs   rt   r!   )rv   rw   rx   ry   r!   r"   r4   Ê  ó    c                      r{   )Nrq   rt   r!   rz   r!   r"   r4   Ë  r|   c                      r{   )NÚspacert   r!   rz   r!   r"   r4   Ì  r|   c                      s   t ˆˆˆgˆ ˆˆgddƒS )Nrq   Z222rt   r!   ru   r!   r"   r4   Í  r|   r_   r   )r   r   r   rV   rI   r   r1   )Zq0drX   rY   rZ   ZkeZkdsr!   rz   r"   Útest_kin_eqsº  s*   "(&&&
ý0r€   c               	      sþ  t dƒ\} }}‰}}t dƒ\}}tdƒ}tdƒ‰ˆ dd| ˆjg¡}| dd||jg¡}	|	 dd||	jg¡}
|
 ˆˆ|	j ||	j  ||	j  ¡ td	ƒ}| 	ˆ||	j ||j|	jA   ¡ | 
d
||	j ¡‰ ˆ  |ˆ|
¡ ˆ  ˆ¡| ˆ¡|
 ˆ¡g‰ˆ||||g‰tˆˆˆƒ| |	j ||	j d|	jt|ƒ|	j t|ƒ|	j  gddd|	jt|ƒ|	j t|ƒ|	j  g|	j|	j|	jddggksÃJ ‚tdƒ}tdƒ}||j ||j  }t|f||f|ƒ|j|jggksçJ ‚tt‡ ‡‡fdd„ƒ tt‡‡‡fdd„ƒ d S )Nzq1 q2 q3 u1 u2 u3zu4, u5Úrr   ÚYr   ÚLÚRr   ÚDmcr   r   r   c                      s   t ˆ  ˆ¡ˆˆƒS r/   )r   Úvelr!   )r…   r   Úu_listr!   r"   r4   ï  r~   z'test_partial_velocity.<locals>.<lambda>c                      s   t ˆˆˆ ƒS r/   )r   r!   )r   rw   Úvel_listr!   r"   r4   ð  r5   )r   r   r   rU   r    r   r   Zset_ang_velr
   Zset_velZ	locatenewZv2pt_theoryr†   Z
ang_vel_inr   r   r   r   rI   )r&   r(   r'   rx   ry   Zu4Zu5r   r‚   rƒ   r„   r   r   r   r<   r!   )r…   r   rw   r‡   rˆ   r"   Útest_partial_velocityÑ  s4   &"
4&þÿ$r‰   c                  C   s€   t dƒ} t ddd}t ddd}t ddd	\}}t d
dd}| jd u s%J ‚|js*J ‚|js/J ‚|| || ks9J ‚|js>J ‚d S )NÚf1Úf2T)ÚrealÚf3)Zpositivezf4,f5F)ZcommutativeÚf6)Úinteger)r   Zis_realZis_positiveÚ
is_integer)rŠ   r‹   r   Zf4Zf5rŽ   r!   r!   r"   Útest_dynamicsymbolsò  s   

r‘   N)8Zsympy.core.numbersr   Zsympy.core.singletonr   Zsympy.core.symbolr   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr   r   Zsympy.integrals.integralsr   Zsympy.physics.vectorr	   r
   r   r   Zsympy.physics.vector.functionsr   r   r   r   r   r   r   r   r   Zsympy.simplifyr   Zsympy.testing.pytestr   r&   r(   r'   rW   Zq5r   rU   r    r   r   r   r   r   r#   r)   r+   r-   rJ   rK   r]   rp   r€   r‰   r‘   r!   r!   r!   r"   Ú<module>   s6    ,I ++9!