a
    R¹§eF  ã                   @   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   ú\/var/www/sunrise/env/lib/python3.9/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   Z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ƒ‚g d¢}||vr4tdd |¡ ƒ‚|dv rF|}d}nF|d d… dv 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J ‚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xyzr1   r2   r$   r4   r   r3   F)Ú
isinstanceÚstrÚ
ValueErrorÚjoinÚisdigitÚintÚindexÚlowerr   r   r   r*   r   )r   Úgroupr   Zpermitted_axesÚsymbolÚorderr   r   r   Úcreate_groupl   s4    
 
r@   )r   )r   )r+   )Únumpyr   Zscipy.constantsr   r   r   r   r   r*   r   r@   r   r   r   r   Ú<module>   s   8
	
