U
    ?hF  ã                   @   sN   d dl Zd dlmZ dd„ Zdd„ Zdd„ Zdd
d„Zddd„Z	ddd„Z
dS )é    N)Úgoldenc              5   C   s>  t | ƒ ¡ }d}dt }td }t |
 |
 |
 dg|
 |
 | dg|
 |
 d|
 g|
 |
 d| g|
 | |
 dg|
 | | dg|
 | d|
 g|
 | d| g|
 d|
 |
 g|
 d|
 | g|
 d| |
 g|
 d| | g|
 |
 d|
 g|
 |
 d| g|
 |
 |
 dg|
 |
 | dg|
 | d|
 g|
 | d| g|
 | |
 dg|
 | | dg|
 d|
 |
 g|
 d|
 | g|
 d| |
 g|
 d| | g|
 |
 |
 dg|
 |
 | dg|
 |
 d|
 g|
 |
 d| g|
 | |
 dg|
 | | dg|
 | d|
 g|
 | d| g|
 d|
 |
 g|
 d|
 | g|
 d| |
 g|
 d| | gd|
 |
 |
 gd|
 |
 | gd|
 | |
 gd|
 | | gd|
 |
 |
 gd|
 |
 | gd|
 | |
 gd|
 | | gd|
 |
 |
 gd|
 |
 | gd|
 | |
 gd|
 | | gg0¡}|  t ||f¡¡S )Nç      à?é   r   )ÚtetrahedralÚas_quatÚphiÚnpÚarrayÚ	from_quatÚconcatenate)ÚclsÚg1ÚaÚbÚcÚg2© r   úZ/var/www/html/venv/lib/python3.8/site-packages/scipy/spatial/transform/_rotation_groups.pyÚicosahedral   sl    Ñ0r   c                 C   sà   t | ƒ ¡ }t d¡d }t |
 dd|
 gd|
 d|
 gdd|
 |
 gdd| |
 gd| d|
 g| dd|
 gd|
 |
 dgd| |
 dg|
 d|
 dg| d|
 dg|
 |
 ddg| |
 ddgg¡}|  t ||f¡¡S )Nr   r   )r   r   r   Úsqrtr	   r
   r   ©r   r   r   r   r   r   r   Ú
octahedral=   s     õr   c                 C   s¬   t  d¡}d}t  || | |
 g|| |
 |
 g||
 | |
 g||
 |
 |
 g|| | | g|| |
 | g||
 | | g||
 |
 | gg¡}|  t  ||f¡¡S )Né   r   )r   Úeyer	   r
   r   r   r   r   r   r   O   s    
ùr   r   c                 C   sr   t | ||ƒ ¡ }tjdtj|dd}tjt t |¡t |¡t |¡g¡j	 }tj
||dd}|  t ||f¡¡S )Nr   F©Zendpointé   ©Úaxis)ÚcyclicZ	as_rotvecr   ÚlinspaceÚpiÚvstackÚzerosÚcosÚsinÚTÚrollÚfrom_rotvecr   )r   Únr   r   ÚthetasÚrvr   r   r   r   Údicyclic]   s
    *r+   c                 C   sL   t jddt j |dd}t  |t  |¡t  |¡g¡j}|  t j||dd¡S )Nr   r   Fr   r   r   )r   r   r    r!   r"   r%   r'   r&   )r   r(   r   r)   r*   r   r   r   r   f   s    r   ÚZc                 C   s   t |tƒstdƒ‚ddddddg}||kr<tdd	 |¡ ƒ‚|d
krN|}d}nF|d d… dkrŒ|dd …  ¡ rŒ|d d… }t|dd … ƒ}ntdƒ‚|dk r¤tdƒ‚d | ¡ ¡}|dkrÂt| ƒS |dkrÒt	| ƒS |dkrât
| ƒS |dk rút| ||dS |dkrt| ||dS dst‚d S )Nz!`group` argument must be a stringÚxÚyÚzÚXÚYr,   z`axis` must be one of z, )ÚIÚOr%   r   )ÚCÚDz0`group` must be one of 'I', 'O', 'T', 'Dn', 'Cn'zGroup order must be positiveZxyzr2   r3   r%   r5   r   r4   F)Ú
isinstanceÚstrÚ
ValueErrorÚjoinÚisdigitÚintÚindexÚlowerr   r   r   r+   r   ÚAssertionError)r   Úgroupr   Zpermitted_axesÚsymbolÚorderr   r   r   Úcreate_groupl   s4    
 

rB   )r   )r   )r,   )Únumpyr   Zscipy.constantsr   r   r   r   r   r+   r   rB   r   r   r   r   Ú<module>   s   8
	
