a
    ¬<bí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>J ‚tˆ||ƒ tˆ||ƒ¡s^J ‚tˆ||ƒ ˆ¡svJ ‚tˆ||ƒ tˆdƒ¡du s˜J ‚tˆdd	 tˆdƒ¡s¶J ‚|ttdddƒdd	ksÔJ ‚||ksâJ ‚||	ksðJ ‚|
ttdddƒd
d	ksJ ‚|
 | ||¡| d|  d|  d ks:J ‚| | ||¡| d|  | ks^J ‚|j	ˆksnJ ‚|j	ˆks~J ‚|
j	|ksŽJ ‚|j
dksžJ ‚|
j
d
ks®J ‚ˆ|v s¼J ‚ˆ|v sÊJ ‚||
v sØJ ‚| tddƒ¡ˆksòJ ‚| tdddƒ¡‰ ˆ ttddƒtddƒtddƒƒks,J ‚ˆ |v s:J ‚| ttddƒtddƒƒ¡}|ttdddƒttddƒtddƒtddƒƒƒksŒJ ‚||v sšJ ‚tƒ }| ¡ }| |¡ |¡}t| |d¡| |d¡ƒ}|j	|vrê|j|vsîJ ‚| |¡ |¡sJ ‚| 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sdJ ‚| 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ÄJ ‚| |j¡| |¡ksàJ ‚| |¡du sôJ ‚| |¡sJ ‚| tˆ|ƒ¡sJ ‚| |¡du s.J ‚| |¡s>J ‚| |¡sNJ ‚| |¡s^J ‚| |¡du srJ ‚| |¡du s†J ‚| tddƒ¡sœJ ‚| d ¡du s°J ‚| | ||¡¡dksÌJ ‚| | ||¡¡dksèJ ‚| | |¡¡dksJ ‚| | |¡¡dksJ ‚|j	 | |¡¡ ¡ dks<J ‚|j	 | |¡¡ ¡ dks\J ‚| |¡tt d!ƒ t!|ƒ d! dt dƒ t"|ƒ d  t d!ƒt!|ƒ d" t dƒt"|ƒ d  t d!ƒt!|ƒ d ƒksÖJ ‚| ||¡td| | |d|  d| ƒksJ ‚| tdddƒ¡dt dƒ d ks0J ‚| tdddƒ¡d#t dƒ ksTJ ‚| |j	¡dksjJ ‚| |¡dks~J ‚| |¡dks’J ‚| ttdddƒtddd#ƒƒ¡| tddd#ƒ¡  kràd#t dƒ d ksæn J ‚| ttddd#ƒtdddƒƒ¡| tdddƒ¡  kr4dt dƒ d ks:n J ‚| ttdddƒtdddƒƒ¡dksdJ ‚| ttdddƒtdddƒƒ¡dksŽJ ‚| ttdddƒtd$dd%ƒƒ¡| tdddƒ¡  krÜdt dƒ d ksân J ‚| ttdddƒd&d	¡t dƒk	s
J ‚| ttddd#ƒg d'¢d(¡d#t dƒ d k	s>J ‚| ttdddƒg d)¢d(¡dk	sfJ ‚| #|¡t$d k	s~J ‚| #|¡dk	s’J ‚| #|¡dk	s¦J ‚| #ttdddƒtdd#dƒƒ¡t%t dƒd ƒ k	sÞJ ‚| #ttdd#dƒtdddƒƒ¡t%t dƒd ƒk
sJ ‚| #ttdddƒtddd#ƒƒ¡t%dt d*ƒ d* ƒk
sNJ ‚t&|||ƒdu 
sdJ ‚t&|ƒdu 
svJ ‚t&tdddƒtdddƒtdddƒtdddƒƒ
sªJ ‚t&tˆ||ƒtˆ||ƒƒ
sÊJ ‚t '|||
¡du 
sâJ ‚t '|¡du 
söJ ‚ttd+d„ ƒ ttd,d„ ƒ | (tdddƒ¡ttdddƒdd	ks>J ‚tdd-ƒ‰ ˆ  )¡ ttdddƒd.ƒkshJ ‚ˆ  )tdddƒ¡ttdddƒd.ƒks’J ‚ˆ  )d/d¡ttdddƒd0ƒks¶J ‚tt‡ fd1d„ƒ tdddƒtdddƒ }}d}t||d	‰ ˆ  )||¡t|d-ƒksJ ‚t|Ž }ˆ  )||¡t|d2ƒks2J ‚t||jd	 )||| ¡ttdddƒd-ƒksdJ ‚t||d	 )||| ¡ttdddƒd2ƒks”J ‚t||jd	 )||| ¡ttdddƒd-ƒksÆJ ‚t|dd	‰ ˆ  )¡ t|d-d	ksìJ ‚| *|¡|gksJ ‚| *|j	¡|j	gksJ ‚| *|¡ttd3d#dƒtdd#dƒƒgksHJ ‚| *ttddd#ƒtd#d#dƒƒ¡tdtd3dƒtddƒƒgksˆJ ‚| *ttdddƒd4d	¡ttd5d6dƒtd7d8dƒƒgksÄJ ‚| *ttdddƒtddd#ƒƒ¡tdddƒgksøJ ‚| *ttdddƒtddd#ƒƒ¡g ks"J ‚| *ttddƒtd#dƒƒ¡ttddƒtdd#ƒdƒgks^J ‚ttddƒtd#dƒƒ}td9dd	 *|¡ttddƒtd#dƒƒgks¤J ‚| *|¡ttdddƒtd:ddƒƒgksÐJ ‚| *|¡ttdddƒtdddƒƒgksüJ ‚| *|¡ttdddƒtdddƒƒgks(J ‚| *|¡g ks<J ‚| *|¡ttdddƒtd:ddƒƒgkshJ ‚| *|¡ttdddƒtd:dd6ƒƒgks”J ‚| ¡ |v s¦J ‚|jdd;|v s¼J ‚| *|j	¡d  |j	¡sÚJ ‚| *|¡d  ttd3d#dƒtdd#dƒƒ¡s
J ‚td9dd	}| *tˆd<ƒ¡d  tdd=ƒ¡s<J ‚| *tˆd<ƒ¡d  tdd<ƒ¡sbJ ‚| *tˆd>ƒ¡d  tˆd>ƒ¡sˆJ ‚| *tˆd?d	¡d  |¡sªJ ‚| *tˆdd	¡d  tˆd@t$ ddfd(¡sÞJ ‚| *tˆdAd	¡d  tˆdBd(¡sJ ‚| *tˆdCd	¡d  tˆdDd(¡s2J ‚| *tˆdEd	¡d  tˆdFd(¡s\J ‚| ¡ |v snJ ‚t+| *ttdddƒtdddƒƒ¡ƒdksœJ ‚| *|¡d  |¡s¶J ‚| tˆdd	¡du sÒJ ‚| |¡sâJ ‚| tˆdGd	¡súJ ‚| tˆddd6t dƒ fd	¡s J ‚| ˆ¡du s4J ‚tttdHdIƒtdJdKƒtdLdMƒƒttdHdNƒtdOdPƒtdLdMƒƒƒ}tttdQdMƒtdRdMƒtdSdMƒƒt,dTƒ t,dUƒ t,dVƒfƒ}t-dWdX„ | *|¡D ƒƒdYksÎJ ‚d S )ZNz	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(   úo/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/sympy/geometry/tests/test_plane.pyÚ<lambda>   ó    ztest_plane.<locals>.<lambda>Fé   é   é   é   é
   ©r   r   r   )r   r   é   é   é   éýÿÿÿé   )é   r8   r8   )r   r   r6   )Zdirection_ratio)r%   r   r   éö   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>ò   r,   ztest_plane.<locals>.<listcomp>z[Point3D(4.0, -0.89, 2.3)]).r   r   r   r   r   Ú
ValueErrorZ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distanceZsimplifyr   r
   r	   Zangle_betweenr   r   r   r:   Zparallel_planer=   ÚintersectionÚlenr   Ústr)ÚxÚyÚzÚuÚvrK   Úp3Zpl3Zpl4Zpl4bZpl5Zpl6Zpl7Zpl8Zpl9Zpl10Zpl11Úl1Úl2Úl3ÚlÚtÚrÚaÚsÚbÚZrD   r(   )r>   r)   r*   Ú
test_plane   sÒ   
 ",$(6<ÿ
<ÿ
  ÿ8ÿ2($ÿ
ÿÿ
ÿ**ÿ
ÿ(4(ÿ
ÿ
ÿ
ÿ
 ÿ
 ÿ

ÿ
ÿ
ÿ
ÿ
ÿÿÿ

ÿ*ÿÿ,,,,,0&&&"ÿ

ÿ

ÿ

ÿ
.&þ
þýþÿýÿra   c                  C   sº   t tdddƒdd} tddƒ}|  |¡ttddƒtddƒtddƒƒksJJ ‚tddƒtddƒ }}d}t ||d}| ||¡t tdddƒd	ƒks’J ‚t d
ddƒ d¡tdddƒgks¶J ‚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   rI   r   r=   rN   )ÚAr_   r]   r`   r>   r(   r(   r*   Útest_dimension_normalizationö   s    
,"ÿÿrc   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sjJ ‚ˆ  d| |¡| d|diksˆJ ‚ˆ  |ˆ¡|ksœJ ‚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   )rf   r   r   r(   rg   r(   r*   r+     r,   c                      s   ˆ   dˆd¡S )Nrd   r   re   r(   rg   r(   r*   r+     r,   )r   r   r   rf   r   r   r   rH   )rT   rU   r)   rK   rV   r(   rg   r*   Útest_parameter_value  s    ((rh   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   ra   rc   rh   r(   r(   r(   r*   Ú<module>   s   0 l