U
    —9%eí0  ã                   @   s°   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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mZ d dlmZ d dlmZ d	d
„ Zdd„ Zdd„ ZdS )é    )ÚRationalÚpi)ÚS)ÚDummyÚsymbols)Úsqrt)ÚasinÚcosÚsin)
ÚLineÚPointÚRayÚSegmentÚPoint3DÚLine3DÚRay3DÚ	Segment3DÚPlaneÚCircle)Úare_coplanar)Úraisesc               	      sÖ  t ddd\} }}}}tdddƒ‰tdddƒ}tdddƒ}tˆ||ƒ}tˆdd	}tˆ|ƒ}	t|d
d	}
ttdddƒdd	}ttdddƒdd	}tˆdd	}tˆdd	}tˆdd	}t|dd	}ttdddƒtdddƒƒ}ttdddƒtdddƒƒ}ttdddƒtdddƒƒ}tt‡fdd„ƒ tˆ||ƒtˆ||ƒks>t‚tˆ||ƒ tˆ||ƒ¡s^t‚tˆ||ƒ ˆ¡svt‚tˆ||ƒ tˆdƒ¡dks˜t‚tˆdd	 tˆdƒ¡s¶t‚|ttdddƒdd	ksÔt‚||ksât‚||	ksðt‚|
ttdddƒd
d	kst‚|
 	| ||¡| d|  d|  d ks:t‚| 	| ||¡| d|  | ks^t‚|j
ˆksnt‚|j
ˆks~t‚|
j
|ksŽt‚|jdksžt‚|
jd
ks®t‚ˆ|ks¼t‚ˆ|ksÊt‚||
ksØt‚| tddƒ¡ˆksòt‚| tdddƒ¡‰ ˆ ttddƒtddƒtddƒƒks,t‚ˆ |ks:t‚| ttddƒtddƒƒ¡}|ttdddƒttddƒtddƒtddƒƒƒksŒt‚||ksšt‚tƒ }| ¡ }| |¡ |¡}t| |d¡| |d¡ƒ}|j
|krê|j|ksît‚| |¡ |¡st‚| ttddƒtddƒƒ¡tttddƒtddƒtddƒƒttddƒtddƒtddƒƒƒksdt‚| ttddƒtddƒƒ¡tttddƒtddƒtddƒƒttddƒtddƒtddƒƒƒksÄt‚| |j¡| |¡ksàt‚| |¡dksôt‚| |¡st‚| tˆ|ƒ¡st‚| |¡dks.t‚| |¡s>t‚| |¡sNt‚| |¡s^t‚| |¡dksrt‚| |¡dks†t‚| tddƒ¡sœt‚| d ¡dks°t‚| | ||¡¡dksÌt‚| | ||¡¡dksèt‚| | |¡¡dkst‚| | |¡¡dkst‚|j
 | |¡¡  ¡ dks<t‚|j
 | |¡¡  ¡ dks\t‚| |¡tt!d!ƒ t"|ƒ d! dt!dƒ t#|ƒ d  t!d!ƒt"|ƒ d" t!dƒt#|ƒ d  t!d!ƒt"|ƒ d ƒksÖt‚| ||¡td| | |d|  d| ƒkst‚| tdddƒ¡dt!dƒ d ks0t‚| tdddƒ¡d#t!dƒ ksTt‚| |j
¡dksjt‚| |¡dks~t‚| |¡dks’t‚| ttdddƒtddd#ƒƒ¡| tddd#ƒ¡  kràd#t!dƒ d ksæn t‚| ttddd#ƒtdddƒƒ¡| tdddƒ¡  kr4dt!dƒ d ks:n t‚| ttdddƒtdddƒƒ¡dksdt‚| ttdddƒtdddƒƒ¡dksŽt‚| ttdddƒtd$dd%ƒƒ¡| tdddƒ¡  krÜdt!dƒ d ksân t‚| ttdddƒd&d	¡t!dƒk	s
t‚| ttddd#ƒddd$gd'¡d#t!dƒ d k	s@t‚| ttdddƒdddgd'¡dk	sjt‚| $|¡t%d k	s‚t‚| $|¡dk	s–t‚| $|¡dk	sªt‚| $ttdddƒtdd#dƒƒ¡t&t!dƒd ƒ k	sât‚| $ttdd#dƒtdddƒƒ¡t&t!dƒd ƒk
st‚| $ttdddƒtddd#ƒƒ¡t&dt!d(ƒ d( ƒk
sRt‚t'|||ƒdk
sht‚t'|ƒdk
szt‚t'tdddƒtdddƒtdddƒtdddƒƒ
s®t‚t'tˆ||ƒtˆ||ƒƒ
sÎt‚t (|||
¡dk
sæt‚t (|¡dk
sút‚ttd)d„ ƒ ttd*d„ ƒ | )tdddƒ¡ttdddƒdd	ksBt‚tdd+ƒ‰ ˆ  *¡ ttdddƒd,ƒkslt‚ˆ  *tdddƒ¡ttdddƒd,ƒks–t‚ˆ  *d-d¡ttdddƒd.ƒksºt‚tt‡ fd/d„ƒ tdddƒtdddƒ }}d}t||d	‰ ˆ  *||¡t|d+ƒkst‚t|Ž }ˆ  *||¡t|d0ƒks6t‚t||jd	 *||| ¡ttdddƒd+ƒksht‚t||d	 *||| ¡ttdddƒd0ƒks˜t‚t||jd	 *||| ¡ttdddƒd+ƒksÊt‚t|dd	‰ ˆ  *¡ t|d+d	ksðt‚| +|¡|gkst‚| +|j
¡|j
gks t‚| +|¡ttd1d#dƒtdd#dƒƒgksLt‚| +ttddd#ƒtd#d#dƒƒ¡tdtd1dƒtddƒƒgksŒt‚| +ttdddƒd2d	¡ttd3d4dƒtd5d6dƒƒgksÈt‚| +ttdddƒtddd#ƒƒ¡tdddƒgksüt‚| +ttdddƒtddd#ƒƒ¡g ks&t‚| +ttddƒtd#dƒƒ¡ttddƒtdd#ƒdƒgksbt‚ttddƒtd#dƒƒ}td7dd	 +|¡ttddƒtd#dƒƒgks¨t‚| +|¡ttdddƒtd8ddƒƒgksÔt‚| +|¡ttdddƒtdddƒƒgks t‚| +|¡ttdddƒtdddƒƒgks,t‚| +|¡g ks@t‚| +|¡ttdddƒtd8ddƒƒgkslt‚| +|¡ttdddƒtd8dd4ƒƒgks˜t‚| ¡ |ksªt‚|jdd9|ksÀt‚| +|j
¡d  |j
¡sÞt‚| +|¡d  ttd1d#dƒtdd#dƒƒ¡st‚td7dd	}| +tˆd:ƒ¡d  tdd;ƒ¡s@t‚| +tˆd:ƒ¡d  tdd:ƒ¡sft‚| +tˆd<ƒ¡d  tˆd<ƒ¡sŒt‚| +tˆd=d	¡d  |¡s®t‚| +tˆdd	¡d  tˆd>t% ddfd'¡sât‚| +tˆd?d	¡d  tˆd@d'¡st‚| +tˆdAd	¡d  tˆdBd'¡s6t‚| +tˆdCd	¡d  tˆdDd'¡s`t‚| ¡ |ksrt‚t,| +ttdddƒtdddƒƒ¡ƒdks t‚| +|¡d  |¡sºt‚| tˆdd	¡dksÖt‚| |¡sæt‚| tˆdEd	¡sþt‚| tˆddd4t!dƒ fd	¡s$t‚| ˆ¡dks8t‚tttdFdGƒtdHdIƒtdJdKƒƒttdFdLƒtdMdNƒtdJdKƒƒƒ}tttdOdKƒtdPdKƒtdQdKƒƒt-dRƒ t-dSƒ t-dTƒfƒ}t.dUdV„ | +|¡D ƒƒdWksÒt‚d S )XNz	x y z u vT)Úrealr   é   é   é   ©r   r   r   ©Únormal_vector©r   r   r   é   )r   r   r   éûÿÿÿiúÿÿÿ)r   éþÿÿÿr   ©r   r   r   )r   é   r   )r!   r   r   é   éÿÿÿÿr!   é	   c                      s   t ˆ ˆ ˆ ƒS )N©r   © )Úp1r(   ú^/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/geometry/tests/test_plane.pyÚ<lambda>   ó    ztest_plane.<locals>.<lambda>Fé   é   é   é   é
   ©r   r   r   )r   r   é   é   é   éýÿÿÿé   )é   r8   r8   )Zdirection_ratioéö   c                   S   s   t  tdddƒ¡S )Nr   )r   Úare_concurrentr   r(   r(   r(   r*   r+   ‰   r,   c                   S   s   t dddS )Nr   r2   r   r'   r(   r(   r(   r*   r+   Š   r,   ©r   r   r   )r   r   r   ©r   r   r   )r   r   r%   c                      s   ˆ   ddd¡S )Nr<   r   )r   r   r   )Úperpendicular_planer(   )Úpr(   r*   r+   š   r,   )r%   r   r   r8   )r   r    r   ièÿÿÿéôÿÿÿiçÿÿÿióÿÿÿ)r   r   r   r#   )Úseed)r   r#   r   )gš™™™™™¹?g333333ó?r   )é   r   r   )r   r   ép   rB   )r/   r   r   )r   éõÿÿÿr   )r   r   r/   )r   r/   r   )r%   r%   rC   )r   r%   r   )r   r   r?   l   q,æ5 l    PrN0lüÿÿÿ³6/Ï, l     Iú5 l   AP”<IK l    @ô Ìk l     zæ5 lüÿÿÿAÍk3+ l     cR~ l   muJ9 lüÿÿÿ½1š³a l   Ån!c° z9.00000087501922z4.81170658872543e-13z0.0c                 S   s   g | ]}|  d ¡‘qS )r   )Ún)Ú.0Úir(   r(   r*   Ú
<listcomp>ò   s     ztest_plane.<locals>.<listcomp>z[Point3D(4.0, -0.89, 2.3)])/r   r   r   r   r   Ú
ValueErrorÚAssertionErrorZis_coplanarr   Zequationr)   r   Ú
projectionr   r   Zprojection_liner   r   Zrandom_pointZperpendicular_lineZarbitrary_pointr   ÚsubsÚp2Úequalsr   r   r   ÚargsZis_parallelZis_perpendicularZdistanceÚsimplifyr   r
   r	   Zangle_betweenr   r   r   r:   Zparallel_planer=   ÚintersectionÚlenr   Ústr)ÚxÚyÚzÚuÚvrL   Úp3Zpl3Zpl4Zpl4bZpl5Úpl6Zpl7Zpl8Zpl9Zpl10Zpl11Úl1Úl2Úl3ÚlÚtÚrÚaÚsÚbÚZrD   r(   )r>   r)   r*   Ú
test_plane   sÖ   
 ",$(6<ÿ
<ÿ
  ÿ& ÿ2($ÿ
ÿÿ
ÿ**ÿ
ÿ(6*ÿ
ÿ
ÿ

 
ÿ
 ÿ
 ÿ

ÿ
ÿ
ÿ
ÿ
ÿÿÿ

ÿ*ÿÿ,,,,,0&&&"ÿ

ÿ

ÿ

ÿ
.&þ
þýþÿýÿrd   c                  C   sº   t tdddƒdd} tddƒ}|  |¡ttddƒtddƒtddƒƒksJt‚tddƒtddƒ }}d}t ||d}| ||¡t tdddƒd	ƒks’t‚t d
ddƒ d¡tdddƒgks¶t‚d S )Nr   r   r   r   r$   r   r   r"   r;   )r   r   r   )r   r   r   )r   r   r   )r   r   )r   r   r   rJ   r   rI   r=   rP   )ÚArb   r`   rc   r>   r(   r(   r*   Útest_dimension_normalizationö   s    
,"ÿÿrf   c                     sÜ   t dƒ\‰} }tdddƒtdddƒtdddƒ  }}}t|||ƒ‰ ˆ  dˆ¡ˆtdtdƒ d ƒiksjt‚ˆ  d| |¡| d|diksˆt‚ˆ  |ˆ¡|ksœt‚tt‡ ‡fdd	„ƒ tt‡ ‡fd
d	„ƒ tt‡ ‡fdd	„ƒ d S )Nzt, u vr   r   ©r   r6   r   r   r0   r   c                      s   ˆ   dˆ¡S )Nr;   ©Úparameter_valuer(   ©r>   r^   r(   r*   r+   
  r,   z&test_parameter_value.<locals>.<lambda>c                      s   ˆ   ttddƒtddƒƒˆ¡S )Nr   r   )ri   r   r   r(   rj   r(   r*   r+     r,   c                      s   ˆ   dˆd¡S )Nrg   r   rh   r(   rj   r(   r*   r+     r,   )	r   r   r   ri   r   r   rI   r   rH   )rV   rW   r)   rL   rX   r(   rj   r*   Útest_parameter_value  s    ((rk   N) Zsympy.core.numbersr   r   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr   r	   r
   Zsympy.geometryr   r   r   r   r   r   r   r   r   r   Zsympy.geometry.utilr   Zsympy.testing.pytestr   rd   rf   rk   r(   r(   r(   r*   Ú<module>   s   0 l