a
    ¬<b  ã                   @   sÄ   d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	 d dl
mZ d dl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mZ d	d
„ Zedd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Z dS )é    )ÚTuple)ÚRationalÚpi)ÚS)ÚSymbolÚsymbols)Úasinh)Úsqrt)	ÚCurveÚLineÚPointÚEllipseÚRayÚSegmentÚCircleÚPolygonÚRegularPolygon)ÚraisesÚslowc                     sè  t ddd‰t dƒ‰ t dƒ} tdˆ  ˆ d g| ddfƒ}|j| ksFJ ‚|jdˆ  ˆ d fks`J ‚| ¡ tdˆ  ˆ d ƒks~J ‚| | ¡tdˆ  ˆ d ƒksžJ ‚tdˆ  ˆ d gˆ ddfƒ}|jˆ ksÈJ ‚|jdˆ  ˆ d fksâJ ‚t dƒ‰| ¡ tdˆ ˆd ƒks
J ‚t ddd‰| ¡ tdˆ ˆd ƒks6J ‚| | ¡td|  | d ƒksXJ ‚| |j¡tdˆ  ˆ d ƒks|J ‚| d ¡tdˆ  ˆ d ƒksžJ ‚| ¡ ˆddgks¶J ‚| | ¡| ddgksÐJ ‚tˆˆgˆdd	fƒ td ¡tˆ ˆgˆdd	fƒks
J ‚tˆˆgˆdd	fƒ td d
¡ 	dd¡ 
d	d¡ ˆ ¡tddƒ td d
¡ 	dd¡ 
d	d¡ ˆ ¡  kr’tdˆ  d dˆ  d ƒks˜n J ‚tt‡ fdd„ƒ tt‡fdd„ƒ tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ d S )NÚxT©ÚrealÚsÚzé   r   Úté   )r   r   é   )r   r   )r   r   éþÿÿÿé   é   c                      s   t ˆ ˆ ddfƒS ©Nr   r   ©r
   © )r   r#   úo/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/sympy/geometry/tests/test_curve.pyÚ<lambda>0   ó    ztest_curve.<locals>.<lambda>c                      s   t ˆ ˆ d fdˆ fƒS )Nr   r   r"   r#   )r   r#   r$   r%   1   r&   c                      s   t ˆ ˆ ˆ fˆ ddfƒ ¡ S r!   ©r
   Úarbitrary_pointr#   ©r   r   r#   r$   r%   3   r&   c                      s   t ˆ ˆ ˆ fˆddfƒ ˆ ¡S r!   r'   r#   r)   r#   r$   r%   4   r&   )r   r
   Z	parameterZ	functionsr(   r   Zplot_intervalÚrotater   ÚscaleÚ	translater   r   Ú
ValueError)r   Úcr#   )r   r   r   r$   Ú
test_curve   sL       "$":(ÿÿÿÿþ
ür/   c                  C   s&  t dƒ\} }}}}}}t| |ƒj| |hks.J ‚t| |f||fƒj| |||hksRJ ‚t| |f||fƒj| |||hksvJ ‚t| |f|dj| ||hks–J ‚t| |f||fƒj| |||hksºJ ‚t| |f|dj| ||hksÚJ ‚t| | || f|||fƒj| |||hks
J ‚t| |f||ƒj| |||hks.J ‚t| |f||dj| |||hksTJ ‚t| |f||dj| |||hkszJ ‚t| |f|ƒj| ||hksšJ ‚t| |f||f||fƒj|||||| hksÊJ ‚t	| |f||f||fƒj||||| |hksúJ ‚t
| |f|||ƒj|| |||hks"J ‚d S )Nza:f,s)Zangle)Zslope)Úeccentricity)Zvradiusr0   )r   r   Zfree_symbolsr   r   r   r
   r   r   r   r   )ÚaÚbr.   ÚdÚeÚfr   r#   r#   r$   Útest_free_symbols7   s.    $$ $ 0$
ÿ

ÿ
 ÿ
ÿ
r6   c                     s  t ddd‰t ddd} tˆˆd fˆddfƒ‰ tdˆ d d	ˆd  d
 fˆddfƒ‰tddƒttjtddƒƒtddƒg}tddƒtdtddƒƒtddƒg}ˆ  dd	d¡ˆks´J ‚‡ ‡fdd„tdddƒD ƒ|ksØJ ‚‡‡fdd„tdddƒD ƒ|ksüJ ‚tˆ|  d	ˆ fˆddfƒ | tj¡tˆtj d	ˆ fˆddfƒksFJ ‚tˆd	ˆ fˆddfƒ 	dd¡tˆd d	ˆ d fˆddfƒksŒJ ‚d S )Nr   Tr   Úyr   r   r   é   r   é
   éüÿÿÿiöÿÿÿéýÿÿÿiÛÿÿÿr   iùÿÿÿ)r8   é   c                    s   g | ]}ˆ   ˆ|d  ¡‘qS ©r   ©Úsubs©Ú.0Úxi)r.   r   r#   r$   Ú
<listcomp>W   r&   z"test_transform.<locals>.<listcomp>c                    s   g | ]}ˆ   ˆ|d  ¡‘qS r=   r>   r@   )Úcoutr   r#   r$   rC   X   r&   r<   )
r   r
   r   r   ZHalfr   r+   r   r?   r,   )r7   ZptsZpts_outr#   )r.   rD   r   r$   Útest_transformN   s    ($"$$$ÿ
ÿrE   c                  C   s¬   t ddd} t| df| ddfƒ}|jdks.J ‚t| | f| ddfƒ}|jtdƒksTJ ‚t| d | f| ddfƒ}|jtdƒ td	ƒd	  td
ƒd	  dtdƒ d  ks¨J ‚d S )Nr   Tr   r   r   r   r<   é   r8   r9   ée   )r   r
   Úlengthr	   r   )r   Zc1Úc2Úc3r#   r#   r$   Útest_length_   s    rK   c                      sT   t dƒ‰tdˆ ˆd gˆddfƒ‰ ˆ  dˆ¡ˆdiks<J ‚tt‡ ‡fdd„ƒ d S )Nr   r   r   )r   r   r   c                      s   ˆ   dˆ¡S )N)r   r   )Úparameter_valuer#   ©ÚCr   r#   r$   r%   p   r&   z&test_parameter_value.<locals>.<lambda>)r   r
   rL   r   r-   r#   r#   rM   r$   Útest_parameter_valuel   s    rO   c                  C   sp   t dƒ\} }t| | d f| ddfƒ}td| |d g|ddfƒ}|dƒtddƒksVJ ‚|dƒtddƒkslJ ‚d S )Nzt sr   r   r9   r8   r   )r   r
   r   )r   r   r.   Úpr#   r#   r$   Útest_issue_17997s   s
    rQ   N)!Zsympy.core.containersr   Zsympy.core.numbersr   r   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Z%sympy.functions.elementary.hyperbolicr   Z(sympy.functions.elementary.miscellaneousr	   Zsympy.geometryr
   r   r   r   r   r   r   r   r   Zsympy.testing.pytestr   r   r/   r6   rE   rK   rO   rQ   r#   r#   r#   r$   Ú<module>   s   ,,
