o
    h                     @   s   d dl mZmZmZ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 d dlmZmZmZmZ d dlmZ dd Zd	d
 Zdd Zdd ZdS )    )R2R2_pR2_rR3_r)intcurve_seriesDifferentialWedgeProduct)symbolsFunction
Derivative)trigsimpsimplify)sqrtatan2sincos)Matrixc                  C   s^  t ddd\} }}}t ddd\}}td}tt| |gtt| d |d  t|| gks3J tt||gt|t	| |t
| gksMJ tt||gtt	|| t
| gt
||t	| ggksnJ |tjtj}t| |g}tt| d |d  t|| g}	|||| |ksJ ||	|| |ksJ t| |g}
t||g}t|
| ksJ t||t	| ksJ t||ksJ t|
t| d |d  ksJ t|
t|| ksJ tjtjd  tjd  }||
| | d |d   |d  ksJ |||d t
|d  |d t	|  ks-J d S )Nzx0, y0, r0, theta0Trealzx, yf      )r	   r
   r   point_to_coordsr   pointr   r   r   r   r   jacobianr   xyrcallrtheta)x0y0r0theta0r   r   r   field
p1_in_rectp1_in_polarp_rp_ph r*   d/var/www/vscode/kcb/lib/python3.10/site-packages/sympy/diffgeom/tests/test_function_diffgeom_book.pytest_functional_diffgeom_ch2   s6    (
$",8r,   c                     s  t ddd\} }t ddd\}} td}td}td}t| |g}|tjtj}|tjtj |tjtj  }	|		|	|
 || t|| ||  ||t|| ||  ks_J ttjd 	|d|  kspJ tjdtj  }
tjd d	tj  }|
	|	|
 d|  d
|  d	 ksJ tj tj tjtj  }t| tddgdd}t| \}}t fddt|D sJ t fddt|D sJ d S )Nzx0, y0Tr   zx, y, tr   b1b2r   r         r   )coeffsc                 3   (    | ]\}}|t  | kV  qd S N)r   taylor_term.0itermtr*   r+   	<genexpr>G       
z/test_functional_diffgeom_ch3.<locals>.<genexpr>c                 3   r2   r3   )r   r4   r5   r9   r*   r+   r;   I   r<   )r	   r
   r   r   r   r   r   e_xe_yr   doitr   r   r   zipall	enumerate)r    r!   r   r   r   r-   r.   r'   s_fieldv_fieldvscircseriesseries_xseries_yr*   r9   r+   test_functional_diffgeom_ch32   s8    
",rK   c                  C   s  t ddd\} }}t ddd\}}}}t ddd}td}td}	td	}
t| |g}t||g}|	tjtjtj |
tjtjtj	  }|
tj
||	| |ksWJ |
tj
||
| |ksgJ |tjtj}t|}|tj
| t|| || ksJ |tj
| t|| ||ksJ |tjtj}t|}t|tj
| t|t|||| t|t|||| |  ksJ t|tj
| t|t|||| t|t|||| |  ksJ ttj
|d
ksJ ttjd
ksJ ttj
|dksJ ttjdks'J tj tj tjtj  }t|
| | ksDJ t	|
|| ksQJ t|
|dks^J tt|
|d
ksmJ |tj 
|
|dks}J d S )Nzx0, y0, theta0Tr   zx, y, r, thetar"   )positiver   r-   r.   r0   r   )r	   r
   r   r   r   r   r   r   dxdyr   r=   r>   r   r?   r   r   r   r   r   r   drr   dthetae_theta)r    r!   r#   r   r   r   r   r"   r   r-   r.   r'   r(   f_field	s_field_rdf	s_field_prG   r*   r*   r+   test_functional_diffgeom_ch4M   sJ   (  (( $rV   c                  C   s  t ddd\	} }}}}}}}}| tj |tj  }	|tj |tj  }
ttjtj}||	|
| | ||  ks9J | tj |tj  |tj  }	|tj |tj  |tj  }
|tj |tj  |tj  }ttjtjtj	}||	|
|t
dd| ||||||||g	 ksJ t dt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|}t|}t|}t|}|t|tj t|tj t|tj	 }|tjtjdksJ d S )Nzu0:3, v0:3, w0:3Tr   r   za, b, c)clsr   )r	   r   r=   r>   r   rM   rN   r   e_zdzr   detr
   r   r   zr   r   )u0u1u2v0v1v2w0w1w2urE   wpwabca_fb_fc_fr   rP   dadbdcexprr*   r*   r+   test_functional_diffgeom_ch6w   s>    

rr   N)sympy.diffgeom.rnr   r   r   r   sympy.diffgeomr   r   r   
sympy.corer	   r
   r   sympy.simplifyr   r   sympy.functionsr   r   r   r   sympy.matricesr   r,   rK   rV   rr   r*   r*   r*   r+   <module>   s     *