U
    L?h*                     @   s^  d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	 d dl
mZmZmZ d dlmZmZmZmZmZ ed\ZZZed\ZZZed	Zed
Zed ej eej  ee	e ej  Zeej e	eej  ee ej  Z eej eeej  e! e ej  Z"ee ej ee e ej  ed e ej  Z#ed ejejB  eejejB   ee	e ejejB   ZeejejB  e	eejejB   ee ejejB   Zejej ej B Z$ejejej B Z%dd Z&dd Z'dd Z(dd Z)dd Z*dd Z+dd Z,dd Z-dd Z.dd Z/d d! Z0d"d# Z1d$d% Z2d&d' Z3d(d) Z4d*d+ Z5d,S )-    )Function)symbols)sqrt)asincossin)ReferenceFramedynamicsymbolsDyadic)VectorLatexPrintervpprintvsprint	vsstrreprvlatexa, b, czalpha, omega, betaAN   c                 C   s   t | dddS )NFZuse_unicodeZ	wrap_liner   expr r   Z/var/www/html/venv/lib/python3.8/site-packages/sympy/physics/vector/tests/test_printing.pyascii_vpretty   s    r   c                 C   s   t | dddS )NTFr   r   r   r   r   r   unicode_vpretty    s    r   c                  C   st   t dd} t | d dks$tt dd}t | dksHtt dd}t |  dksptd S )	Nrtr   zr^{2}zr^2z\dot{r^{2}}Zr__az\ddot{r^{a}})r   r   ZdoprintAssertionErrordiff)r   r2rar   r   r   test_latex_printer$   s    r"   c                  C   s   d} d}t t| ksttt|ks(td} d}t t| ks@ttt|ksPtd} d}t t| kshttt|ksxtt tj dkstttj dkstt dtj d	ksttdtj d	kstd S )
NzC 2                               
a  n_x + b n_y + c*sin(alpha) n_zu>    2                           
a  n_x + b n_y + c⋅sin(α) n_zz+alpha n_x + sin(omega) n_y + alpha*beta n_zu"   α n_x + sin(ω) n_y + α⋅β n_zzk                     2    
a       b + c       c     
- n_x + ----- n_y + -- n_z
b         a         b     u{                        2    
a       b + c       c     
─ n_x + ───── n_y + ── n_z
b         a         b     z-a_xr   0)r   vr   r   wor   xexpected	uexpectedr   r   r   test_vector_pretty_print-   s     r+   c                  C   s  t d\} }}}}| d ||  tj t|tj  t|tj  }t|dksTtt	d\}}}}|tj || tj  || tj  }t|dkstt	d\}	}
}t d\}}}t
|tj t|	t|
 tj  t|| tj  }t|dksttd	}t d\} }}}}| d ||  |j t||j  t||j  }d
}t||ks^ttd	dd}| d ||  |j t||j  t||j  }d}t||kstd}tt|kstd}tt|kstd}tt|kstd S )Nza, b, c, d, omegar   zs(a^{2} + \frac{b}{c})\mathbf{\hat{a}_x} + \sqrt{d}\mathbf{\hat{a}_y} + \cos{\left(\omega \right)}\mathbf{\hat{a}_z}ztheta, omega, alpha, qzT\theta\mathbf{\hat{a}_x} + \omega^{2}\mathbf{\hat{a}_y} + \alpha q\mathbf{\hat{a}_z}zphi1, phi2, phi3ztheta1, theta2, theta3z\sin{\left(\theta_{1} \right)}\mathbf{\hat{a}_x} + \cos{\left(\phi_{1} \right)} \cos{\left(\phi_{2} \right)}\mathbf{\hat{a}_y} + \cos{\left(\theta_{1} + \phi_{3} \right)}\mathbf{\hat{a}_z}r   zs(a^{2} + \frac{b}{c})\mathbf{\hat{n}_x} + \sqrt{d}\mathbf{\hat{n}_y} + \cos{\left(\omega \right)}\mathbf{\hat{n}_z})z\hat{i}z\hat{j}z\hat{k})ZlatexszR(a^{2} + \frac{b}{c})\hat{i} + \sqrt{d}\hat{j} + \cos{\left(\omega \right)}\hat{k}z~\alpha\mathbf{\hat{n}_x} + \operatorname{asin}{\left(\omega \right)}\mathbf{\hat{n}_y} -  \beta \dot{\alpha}\mathbf{\hat{n}_z}z]- \mathbf{\hat{n}_x}\otimes \mathbf{\hat{n}_y} - \mathbf{\hat{n}_x}\otimes \mathbf{\hat{n}_z}z[\mathbf{\hat{n}_x}\otimes \mathbf{\hat{n}_y} + \mathbf{\hat{n}_x}\otimes \mathbf{\hat{n}_z})r   r   r'   r   yr   zr   r   r	   r   r   wwxxxx2)abcdomegar$   thetaalphaqZphi1Zphi2Zphi3Ztheta1Ztheta2Ztheta3r   r)   r   r   r   test_vector_latex`   s:    2&22r9   c                   C   s8   t tjd dddkstt tjd dddks4td S )N      @FZ	full_precz3.0\mathbf{\hat{n}_x}Tz"3.00000000000000\mathbf{\hat{n}_x})r   r   r'   r   r   r   r   r   test_vector_latex_arguments   s    r<   c                  C   sX   t d} td\}}| | j }t|dks2t| | | j }t|dksTtd S )Nr   zomega, alphaz\dot{\omega}\mathbf{\hat{n}_x}z'\dot{\omega}^{\alpha}\mathbf{\hat{n}_x})r   r	   r   r'   r   r   )r   r5   r7   r$   r   r   r    test_vector_latex_with_functions   s    r=   c                  C   s   d} d}t t| ksttt|ks(td} d}t t| ks@ttt|ksPtt tg dksdtttg dksxtt tdkstttdkstt tdkstttd	kstd S )
Nz0 2
a  n_x|n_y + b n_y|n_y + c*sin(alpha) n_z|n_yu5    2
a  n_x⊗n_y + b n_y⊗n_y + c⋅sin(α) n_z⊗n_yz7alpha n_x|n_x + sin(omega) n_y|n_z + alpha*beta n_z|n_xu4   α n_x⊗n_x + sin(ω) n_y⊗n_z + α⋅β n_z⊗n_xr#   z- n_x|n_y - n_x|n_zu   - n_x⊗n_y - n_x⊗n_zzn_x|n_y + n_x|n_zu   n_x⊗n_y + n_x⊗n_z)r   r,   r   r   r'   r
   r/   r0   r(   r   r   r   test_dyadic_pretty_print   s    r>   c                  C   s@   d} t t| kstd} t t| ks(tt tg dks<td S )Nza^{2}\mathbf{\hat{n}_x}\otimes \mathbf{\hat{n}_y} + b\mathbf{\hat{n}_y}\otimes \mathbf{\hat{n}_y} + c \sin{\left(\alpha \right)}\mathbf{\hat{n}_z}\otimes \mathbf{\hat{n}_y}z\alpha\mathbf{\hat{n}_x}\otimes \mathbf{\hat{n}_x} + \sin{\left(\omega \right)}\mathbf{\hat{n}_y}\otimes \mathbf{\hat{n}_z} + \alpha \beta\mathbf{\hat{n}_z}\otimes \mathbf{\hat{n}_x}r#   )r   r,   r   r'   r
   )r)   r   r   r   test_dyadic_latex   s
    r?   c                   C   sh   t tg dkstt tdks$tt tdks4tt tdksDtt tdksTtt tdksdtd S )Nr#   z5a**2*(N.x|N.y) + b*(N.y|N.y) + c*sin(alpha)*(N.z|N.y)z=alpha*(N.x|N.x) + sin(omega)*(N.y|N.z) + alpha*beta*(N.z|N.x)z-alpha*N.x + asin(omega)*N.y - beta*alpha'*N.zz- (N.x|N.y) - (N.x|N.z)z(N.x|N.y) + (N.x|N.z))r   r
   r   r,   r'   r.   r/   r0   r   r   r   r   test_dyadic_str   s    r@   c                  C   sv   ddl m}  td}td}td}td}td}d}||||||||||  }| ||ksrtd S )	Nr   )r   r'   JfghzRJ \left(\frac{d}{d x} g{\left(x \right)} - \frac{d}{d x} h{\left(x \right)}\right))sympy.physics.vectorr   r   r   r   subsr   )r   r'   rA   rB   rC   rD   r)   r   r   r   r   test_vlatex   s    *rG   c                  C   sr   t d\} }}td}| |j ||j  ||j  }||j ||j  | |j  }|| }d}t||ksntdS )z
    Test for proper pretty printing of physics vectors with ADD
    instances in arguments.

    Test is exactly the one suggested in the original bug report by
    @moorepants.
    r   r   z'(a + b) a_x + (b + c) a_y + (a + c) a_zN)r   r   r'   r,   r-   r   r   )r1   r2   r3   r   r$   r%   r-   r)   r   r   r   test_issue_13354  s    	rH   c                  C   sb  t  tj } t| dkstt| dks.tt   tj } t| dksPtt| dks`tt| dksptt    tj } t| dkstt| dkstt| dkstt     tj } t| d	kstt| d
kstt| dkstt      tj } t| dks2td}d}t| |ksLtt| |ks^td S )Nu   ω̇ n_xzomega'(t) n_xz\ddot{\omega}\mathbf{\hat{n}_x}u   ω̈ n_xzomega''(t) n_xz \dddot{\omega}\mathbf{\hat{n}_x}u	   ω⃛ n_xzomega'''(t) n_xz!\ddddot{\omega}\mathbf{\hat{n}_x}u	   ω⃜ n_xzomega''''(t) n_xz.\frac{d^{5}}{d t^{5}} \omega\mathbf{\hat{n}_x}zJ 5            
d             
---(omega) n_x
  5           
dt            u=    5        
d         
───(ω) n_x
  5       
dt        )r5   r   r   r'   r   r   r   r   )r$   r)   r*   r   r   r   test_vector_derivative_printing  s*    rI   c                   C   s>   t tdkstt t tj dks*tttdks:td S )Nz+alpha*N.x + sin(omega)*N.y + alpha*beta*N.zz
omega'*N.x)r   r%   r   r5   r   r   r'   r   r   r   r   r   test_vector_str_printingJ  s    rJ   c                   C   s8   t tjd dddkstt tjd dddks4td S )Nr:   Fr;   z3.0*N.xTz3.00000000000000*N.x)r   r   r'   r   r   r   r   r   test_vector_str_argumentsP  s    rK   c                  C   s   dd l m  m}  | d}| dd\}}td}t||| d  |j dksVtt|| d |j dksttt|| t	 |j d	kstd S )
Nr   r   z
theta, phi   Lr   z>L \left(\dot{\phi} + \dot{\theta}\right)^{2}\mathbf{\hat{a}_x}z<\left(\dot{\phi} + \dot{\theta}\right)^{2}\mathbf{\hat{a}_x}z:\left(\dot{\phi} \dot{\theta}\right)^{a}\mathbf{\hat{a}_x})
Zsympy.physics.mechanicsZphysicsZ	mechanicsr   r	   r   r   r'   r   r1   )meZA_frameZthetadZphidrM   r   r   r   test_issue_14041U  s    
rO   N)6Zsympy.core.functionr   Zsympy.core.symbolr   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr   r   r   rE   r   r	   r
   Zsympy.physics.vector.printingr   r   r   r   r   r1   r2   r3   r7   r5   betar   r   r'   r,   r-   r$   r%   r   r.   r&   r/   r0   r   r   r"   r+   r9   r<   r=   r>   r?   r@   rG   rH   rI   rJ   rK   rO   r   r   r   r   <module>   sB   *&*2<8	3F	1