3
OdF                 @   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          4   C   s>  t | j }d}dt }td }tj|
 |
 |
 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}| jtj||fS )Ng      ?   r   )tetrahedralas_quatphinparray	from_quatconcatenate)clsg1abcg2 r   \/var/www/html/virt/lib64/python3.6/site-packages/scipy/spatial/transform/_rotation_groups.pyicosahedral   sj    r   c             C   s   t | j }tjdd }tj|
 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}| jtj||fS )Nr   r   )r   r   r   sqrtr   r	   r
   )r   r   r   r   r   r   r   
octahedral=   s    r   c             C   s   t jd}d}t j|| | |
 g|| |
 |
 g||
 | |
 g||
 |
 |
 g|| | | g|| |
 | g||
 | | g||
 |
 | gg}| jt j||fS )N   g      ?)r   Zeyer   r	   r
   )r   r   r   r   r   r   r   r   O   s    
r   r   c             C   sr   t | ||j }tjdtj|dd}tjtjtj|tj|tj|gj	 }tj
||dd}| jtj||fS )Nr   F)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 j|t j|t j|gj}| jt j||ddS )Nr   r   F)r   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	j| |dkrN|}d}nF|d d dkr|dd  j r|d d }t|dd  }ntd|dk rtddj|j }|d
krt| S |dkrt	| S |dkrt
| S |dk rt| ||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xyz)r   F)r.   r/   r!   )r0   r1   )
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    
 

r>   )r   )r   )r(   )Znumpyr   Zscipy.constantsr   r   r   r   r   r'   r   r>   r   r   r   r   <module>   s   8
	
