ó
±éRc           @   s6  d  Z  d d l m Z m Z m Z m Z d d l	 m
 Z
 m Z m Z m Z d d l m Z d d l m Z d d l m Z d d l m Z d d l Z d d l Z d d l Z d d l Z d	 „  Z d
 „  Z d „  Z d e j f d „  ƒ  YZ d d d „ Z  d e j! f d „  ƒ  YZ" d d d „ Z# d d d „ Z$ d d d „ Z% d e f d „  ƒ  YZ& d d d „ Z' d e f d „  ƒ  YZ( d e( f d „  ƒ  YZ) d „  Z* d d d „ Z+ d d d „ Z, d  e f d! „  ƒ  YZ- d d d" „ Z. d# e f d$ „  ƒ  YZ/ d d d% „ Z0 d& „  Z1 d' „  Z2 d( „  Z3 d) „  Z4 d* „  Z5 d S(+   sx   
Module containing 3D artist code and functions to convert 2D
artists into 3D versions which can be added to an Axes3D.
iÿÿÿÿ(   t   linest   textt   patht   colors(   t
   Collectiont   LineCollectiont   PolyCollectiont   PatchCollection(   t   ScalarMappable(   t   Patch(   t	   Normalize(   t   iterableNc         C   s+   |  d d }  |  d k r' |  d }  n  |  S(   s"   Return angle between -180 and +180ih  i´   (    (   t   a(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyt
   norm_angle   s    c         C   s+   |  d d }  |  d k r' |  d }  n  |  S(   s    Return angle between -90 and +90i´   iZ   (    (   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyt   norm_text_angle   s    c         C   s–   |  d k r t  j d ƒ S|  d k r2 t  j d	 ƒ S|  d k rK t  j d
 ƒ S|  d  k rd t  j d ƒ St |  ƒ r† t |  ƒ d k r† |  St d ƒ ‚ d  S(   Nt   xi   i    t   yt   zi   s2   'x', 'y', 'z', None or vector of length 3 expected(   i   i    i    (   i    i   i    (   i    i    i   (   i    i    i    (   t   npt   arrayt   NoneR   t   lent
   ValueError(   t   zdir(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyt   get_dir_vector&   s    t   Text3Dc           B   s>   e  Z d  Z d d d d d d „ Z d d d „ Z d „  Z RS(   sE   
    Text object with 3D position and (in the future) direction.
    i    t    R   c         K   s0   t  j j |  | | | | � |  j | | ƒ d S(   sÒ   
        *x*, *y*, *z*  Position of text
        *text*         Text string to display
        *zdir*         Direction of text

        Keyword arguments are passed onto :func:`~matplotlib.text.Text`.
        N(   t   mtextt   Textt   __init__t   set_3d_properties(   t   selfR   R   R   R   R   t   kwargs(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR   9   s    c         C   s@   |  j  ƒ  \ } } t j | | | f ƒ |  _ t | ƒ |  _ d  S(   N(   t   get_positionR   R   t   _position3dR   t   _dir_vec(   R   R   R   R   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR   D   s    c         C   så   t  j |  j |  j |  j g | j ƒ } | d d | d d } | d d | d d } | d k r} | d k r} d } n t j t j | | ƒ ƒ } |  j | d d | d d f ƒ |  j	 t
 | ƒ ƒ t j j |  | ƒ d  S(   Ni    i   g        (   t   proj3dt   proj_trans_pointsR"   R#   t   Mt   matht   degreest   atan2t   set_positiont   set_rotationR   R   R   t   draw(   R   t   renderert   projt   dxt   dyt   angle(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR,   I   s    	#(   t   __name__t
   __module__t   __doc__R   R   R,   (    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR   4   s   i    R   c         C   s   t  |  _ |  j | | ƒ d S(   s"   Convert a Text to a Text3D object.N(   R   t	   __class__R   (   t   objR   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyt   text_2d_to_3dW   s    	t   Line3Dc           B   s/   e  Z d  Z d „  Z d d d „ Z d „  Z RS(   s   
    3D line object.
    c         O   s2   t  j j |  g  g  | | Ž | | | f |  _ d S(   sU   
        Keyword arguments are passed onto :func:`~matplotlib.lines.Line2D`.
        N(   R    t   Line2DR   t   _verts3d(   R   t   xst   yst   zst   argsR    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR   a   s    i    R   c         C   sg   |  j  ƒ  } |  j ƒ  } y) t | ƒ } g  | D] } | ^ q. } Wn n Xt | | | | ƒ |  _ d  S(   N(   t	   get_xdatat	   get_ydatat   floatt   juggle_axesR:   (   R   R=   R   R;   R<   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR   h   s    c         C   s]   |  j  \ } } } t j | | | | j ƒ \ } } } |  j | | ƒ t j j |  | ƒ d  S(   N(   R:   R$   t   proj_transformR&   t   set_dataR    R9   R,   (   R   R-   t   xs3dt   ys3dt   zs3dR;   R<   R=   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR,   s   s    $(   R2   R3   R4   R   R   R,   (    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR8   \   s   	c         C   s   t  |  _ |  j | | ƒ d S(   s"   
    Convert a 2D line to 3D.
    N(   R8   R5   R   (   t   lineR=   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyt   line_2d_to_3dy   s    	c   
      C   s½   t  | ƒ s( t j t |  ƒ ƒ | } n  g  } |  j d t d t ƒ } x? t | | ƒ D]. \ \ \ } } } } | j | | | f ƒ qV Wg  | D]$ \ } } } t | | | | ƒ ^ q� }	 |	 S(   s   Convert a path to a 3D segment.t   simplifyt   curves(	   R   R   t   onesR   t   iter_segmentst   Falset   zipt   appendRB   (
   R   R=   R   t   segt   pathsegsR   R   t   codeR   t   seg3d(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyt   path_to_3d_segment€   s    (1c         C   sk   t  | ƒ s( t j t |  ƒ ƒ | } n  g  } x6 t |  | ƒ D]% \ } } | j t | | | ƒ ƒ q> W| S(   s@   
    Convert paths from a collection object to 3D segments.
    (   R   R   RL   R   RO   RP   RU   (   t   pathsR=   R   t   segmentsR   t   pathz(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyt   paths_to_3d_segments�   s    t   Line3DCollectionc           B   s>   e  Z d  Z d „  Z d „  Z d „  Z d „  Z e d „ Z RS(   s#   
    A collection of 3D lines.
    c         O   s   t  j |  | | | Ž d S(   sc   
        Keyword arguments are passed onto :func:`~matplotlib.collections.LineCollection`.
        N(   R   R   (   R   RW   R>   R    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR   Ÿ   s    c         C   s   | |  _  d S(   s&   Set the position to use for z-sorting.N(   t
   _sort_zpos(   R   t   val(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyt   set_sort_zpos¥   s    c         C   s   | |  _  t j |  g  ƒ d S(   s!   
        Set 3D segments
        N(   t   _segments3dR   t   set_segments(   R   RW   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR_   ©   s    	c   	      C   sŸ   g  |  j  D] } t j | | j ƒ ^ q
 } g  | D] \ } } } t | | ƒ ^ q2 } t j |  | ƒ d } x, | D]$ \ } } } t | t | ƒ ƒ } qs W| S(   sB   
        Project the points according to renderer matrix.
        g    eÍÍA(   R^   R$   R%   R&   RO   R   R_   t   min(	   R   R-   t   pointst   xyslistR;   R<   R=   t   segments_2dt   minz(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyt   do_3d_projection°   s    (+c         C   s*   | r |  j  | ƒ n  t j |  | ƒ d  S(   N(   Re   R   R,   (   R   R-   t   project(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR,   À   s    (	   R2   R3   R4   R   R]   R_   Re   RN   R,   (    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyRZ   š   s   				c         C   s2   t  |  j ƒ  | | ƒ } t |  _ |  j | ƒ d S(   s6   Convert a LineCollection to a Line3DCollection object.N(   RY   t	   get_pathsRZ   R5   R_   (   t   colR=   R   t
   segments3d(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyt   line_collection_2d_to_3dÅ   s    	t   Patch3Dc           B   sJ   e  Z d  Z d „  Z d d d „ Z d „  Z d „  Z d „  Z d „  Z RS(	   s   
    3D patch object.
    c         O   sK   | j  d g  ƒ } | j  d d ƒ } t j |  | | Ž |  j | | ƒ d  S(   NR=   R   R   (   t   popR	   R   R   (   R   R>   R    R=   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR   Ð   s    i    R   c         C   s~   t  | ƒ s( t j t | ƒ ƒ | } n  g  t | | ƒ D]' \ \ } } } t | | | | ƒ ^ q8 |  _ t j |  ƒ |  _	 d  S(   N(
   R   R   RL   R   RO   RB   t
   _segment3dR	   t   get_facecolort   _facecolor3d(   R   t   vertsR=   R   R   R   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR   Ö   s
    =c         C   s   |  j  S(   N(   t   _path2d(   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyt   get_pathÞ   s    c         C   s   |  j  S(   N(   t   _facecolor2d(   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyRn   á   s    c   
      C   sv   |  j  } t | Œ  \ } } } t j | | | | j ƒ \ } } } }	 t j t | | ƒ ƒ |  _ |  j |  _	 t
 | ƒ S(   N(   Rm   RO   R$   t   proj_transform_clipR&   t   mpatht   PathRq   Ro   Rs   R`   (
   R   R-   t   sR;   R<   R=   t   vxst   vyst   vzst   vis(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyRe   ä   s    	'c         C   s   t  j |  | ƒ d  S(   N(   R	   R,   (   R   R-   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR,   í   s    (	   R2   R3   R4   R   R   Rr   Rn   Re   R,   (    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyRk   Ë   s   					t   PathPatch3Dc           B   s/   e  Z d  Z d „  Z d d d „ Z d „  Z RS(   s   
    3D PathPatch object.
    c         K   sK   | j  d g  ƒ } | j  d d ƒ } t j |  | � |  j | | | ƒ d  S(   NR=   R   R   (   Rl   R	   R   R   (   R   R   R    R=   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR   ö   s    i    R   c         C   s/   t  j |  | j d | d | ƒ| j |  _ d  S(   NR=   R   (   Rk   R   t   verticest   codest   _code3d(   R   R   R=   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR   ü   s    c   
      C   s|   |  j  } t | Œ  \ } } } t j | | | | j ƒ \ } } } }	 t j t | | ƒ |  j ƒ |  _ |  j	 |  _
 t | ƒ S(   N(   Rm   RO   R$   Rt   R&   Ru   Rv   R   Rq   Ro   Rs   R`   (
   R   R-   Rw   R;   R<   R=   Rx   Ry   Rz   R{   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyRe      s    	'!(   R2   R3   R4   R   R   Re   (    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR|   ñ   s   	c         C   sC   |  j  ƒ  } |  j ƒ  } | j | ƒ } t | ƒ r; | d Sg  Sd S(   s2   Return a list of vertices for the path of a patch.i    N(   t   get_patch_transformRr   t   to_polygonsR   (   t   patcht   transR   t   polygons(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyt   get_patch_verts	  s    c         C   s,   t  |  ƒ } t |  _ |  j | | | ƒ d S(   s$   Convert a Patch to a Patch3D object.N(   R…   Rk   R5   R   (   R‚   R   R   Rp   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyt   patch_2d_to_3d  s    	c         C   sG   |  j  ƒ  } |  j ƒ  } | j | ƒ } t |  _ |  j | | | ƒ d S(   s,   Convert a PathPatch to a PathPatch3D object.N(   Rr   R€   t   transform_pathR|   R5   R   (   t	   pathpatchR   R   R   Rƒ   Ru   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyt   pathpatch_2d_to_3d  s
    	t   Patch3DCollectionc           B   s;   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s%   
    A collection of 3D patches.
    c            s)   t  j ˆ  | | Ž ‡  f d †  ˆ  _ d  S(   Nc            s   t  j ˆ  |  ƒ S(   N(   R   R,   (   R   (   R   (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyt   <lambda>)  s    (   R   R   t	   _old_draw(   R   R>   R    (    (   R   sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR   '  s    c         C   s   | |  _  d S(   s&   Set the position to use for z-sorting.N(   R[   (   R   R\   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR]   +  s    c         C   s£   |  j  ƒ  |  j ƒ  } t | ƒ d k rC t |  j ƒ  Œ  \ } } n& d g t | ƒ } d g t | ƒ } t | | | | ƒ |  _ |  j ƒ  |  _ |  j ƒ  |  _	 d  S(   Ni    (
   t   update_scalarmappablet   get_offsetsR   RO   RB   t
   _offsets3dRn   Ro   t   get_edgecolort   _edgecolor3d(   R   R=   R   t   offsetsR;   R<   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR   /  s    
c   	      C   s±   |  j  \ } } } t j | | | | j ƒ \ } } } } d  |  _ |  j t |  j | ƒ ƒ |  j	 t |  j
 | ƒ ƒ t j |  t | | ƒ ƒ | j d k r¦ t | ƒ St j Sd  S(   Ni    (   R�   R$   Rt   R&   R   t   _alphat   set_facecolorst   zalphaRo   t   set_edgecolorsR‘   R   t   set_offsetsRO   t   sizeR`   R   t   nan(	   R   R-   R;   R<   R=   Rx   Ry   Rz   R{   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyRe   =  s    '	
c         C   s   |  j  | ƒ d  S(   N(   RŒ   (   R   R-   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR,   K  s    (   R2   R3   R4   R   R]   R   Re   R,   (    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyRŠ   "  s   				c         C   s)   |  j  |  _ t |  _ |  j | | ƒ d S(   s8   Convert a PatchCollection to a Patch3DCollection object.N(   R,   RŒ   RŠ   R5   R   (   Rh   R=   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyt   patch_collection_2d_to_3dN  s    	t   Poly3DCollectionc           B   s¹   e  Z d  Z d „  Z i e j d 6e j d 6e j d 6Z d „  Z	 d „  Z
 e d „ Z d „  Z d	 „  Z d
 „  Z d „  Z e Z d „  Z e Z d „  Z e Z d „  Z e Z d „  Z RS(   s&   
    A collection of 3D polygons.
    c         O   s3   |  j  | j d t ƒ ƒ t j |  | | | Ž d S(   s  
        Create a Poly3DCollection.

        *verts* should contain 3D coordinates.

        Keyword arguments:
        zsort, see set_zsort for options.

        Note that this class does a bit of magic with the _facecolors
        and _edgecolors properties.
        t   zsortN(   t	   set_zsortRl   t   TrueR   R   (   R   Rp   R>   R    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR   ]  s    t   averageR`   t   maxc         C   sl   | t  k r d } n  | t k	 rG | |  j k r@ |  j | } qM t Sn d } | |  _ d |  _ | |  _ d S(   s‹   
        Set z-sorting behaviour:
            boolean: if True use default 'average'
            string: 'average', 'min' or 'max'
        RŸ   N(   Rž   RN   t   _zsort_functionsR   t   _zsortR[   t
   _zsortfunc(   R   Rœ   t	   zsortfunc(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR�   t  s    			c         C   sÝ   d } d } g  } g  } xD | D]< } | j  | ƒ | t | ƒ } | j | | f ƒ | } q Wt | ƒ d k r‰ t | Œ  \ } } }	 n g  g  g  } } }	 t j t | ƒ ƒ }
 t j | | |	 |
 g ƒ |  _ | |  _ d S(   s   Optimize points for projectioni    N(	   t   extendR   RP   RO   R   RL   R   t   _vect   _segis(   R   Ri   t   sit   eit   segisRa   t   pR;   R<   R=   RL   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyt
   get_vectorŠ  s    
c         C   s$   |  j  | ƒ t j |  g  | ƒ d S(   s   Set 3D vertices.N(   R¬   R   t	   set_verts(   R   Rp   t   closed(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR­      s    c         C   sH   |  j  ƒ  d  |  _ |  j t ƒ t j |  ƒ |  _ t j |  ƒ |  _	 d  S(   N(
   R�   R   R[   R�   Rž   R   t   get_facecolorst   _facecolors3dt   get_edgecolorst   _edgecolors3d(   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR   ¦  s
    
	c         C   s   | |  _  d S(   s&   Set the position to use for z-sorting.N(   R[   (   R   R\   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR]   ¯  s    c         C   sÕ  |  j  d	 k	 r( |  j ƒ  |  j |  _ n  t j |  j | j ƒ \ } } } g  |  j	 D]0 \ } } | | | !| | | !| | | !f ^ qS } |  j } |  j
 }	 t | ƒ t | ƒ k rÑ | j t | ƒ d d ƒ} n  t |	 ƒ t | ƒ k r"t |	 ƒ d k r| }	 n  |	 j t | ƒ d d ƒ}	 n  |  j rœg  t | | |	 ƒ D]< \ \ }
 } } } } |  j | ƒ t |
 | ƒ | | f ^ q>} | j d d „  d t ƒ n	 t d ‚ g  | D] \ } } } } | ^ q¬} t j |  | ƒ g  | D] \ } } } } | ^ qá|  _ t |  j
 ƒ t | ƒ k rHg  | D] \ } } } } | ^ q$|  _ n |  j
 |  _ |  j d	 k	 r®t j d g d g |  j g d g g ƒ } t j | | j ƒ } | d d S| j d k rÊt j | ƒ St j Sd	 S(
   s<   
        Perform the 3D projection for this object.
        t   axisi    t   keyc         S   s   |  d S(   Ni    (    (   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR‹   Î  s    t   reverset   whoopsi   i   N(   t   _AR   R�   t   _facecolorsR°   R$   t   proj_transform_vecR¦   R&   R§   R²   R   t   repeatR¢   RO   R£   t   sortRž   R   R   R­   t   _facecolors2dt   _edgecolors2dR[   R   R   R˜   R`   R™   (   R   R-   t   txst   tyst   tzsR¨   R©   t   xyzlistt   cfacet   cedgeR;   R<   R=   t   fct   ect   z_segments_2dR   Rw   Rc   t   zvect   ztrans(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyRe   ³  s@    
!=				R	%(+*c         C   s&   t  j |  | ƒ t  j |  ƒ |  _ d  S(   N(   R   t   set_facecolorRn   R°   (   R   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyRÉ   è  s    c         C   s&   t  j |  | ƒ t  j |  ƒ |  _ d  S(   N(   R   t   set_edgecolorR�   R²   (   R   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyRÊ   í  s    c         C   s   |  j  S(   N(   R¼   (   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR¯   ò  s    c         C   s   |  j  S(   N(   R½   (   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR±   ö  s    c         C   s   t  j |  | ƒ S(   N(   R   R,   (   R   R-   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR,   ú  s    (   R2   R3   R4   R   R   RŸ   R`   R    R¡   R�   R¬   Rž   R­   R   R]   Re   RÉ   R”   RÊ   R–   R¯   Rn   R±   R�   R,   (    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR›   X  s*   	

						5				c         C   s<   t  |  j ƒ  | | ƒ } t |  _ |  j | ƒ |  j ƒ  d S(   s6   Convert a PolyCollection to a Poly3DCollection object.N(   RY   Rg   R›   R5   R­   R   (   Rh   R=   R   t   segments_3d(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyt   poly_collection_2d_to_3dý  s    	c         C   sf   | d k r | |  | f S| d k r2 |  | | f S| d d k rU t  |  | | | ƒ S|  | | f Sd S(   sÛ   
    Reorder coordinates so that 2D xs, ys can be plotted in the plane
    orthogonal to zdir. zdir is normally x, y or z. However, if zdir
    starts with a '-' it is interpreted as a compensation for rotate_axes.
    R   R   i    t   -N(   t   rotate_axes(   R;   R<   R=   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyRB     s    c         C   su   | d k r | | |  f S| d k r2 | |  | f S| d k rK | |  | f S| d k rd | | |  f S|  | | f Sd S(   sÇ   
    Reorder coordinates so that the axes are rotated with zdir along
    the original z axis. Prepending the axis with a '-' does the
    inverse transform, so zdir can be x, -x, y, -y, z or -z
    R   s   -xR   s   -yN(    (   R;   R<   R=   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyRÎ     s    c         C   se   yV t  |  ƒ d k s' t  |  ƒ d k rU t |  d ƒ r; t St |  d d ƒ rU t Sn  Wn t SXt S(   Ni   i   i    t	   __float__(   R   R   RN   t   hasattrRž   (   t   c(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyt   iscolor&  s    $c         C   sÊ   t  |  ƒ t  d ƒ k r- t j j |  ƒ }  n  t |  ƒ rD |  g | St |  ƒ | k rZ |  St |  ƒ rq |  g | St |  ƒ d k rš d d d d g g | St |  d ƒ r¹ |  d g | St d |  ‚ d S(   s=   Stretch the color argument to provide the required number numt   stringi    s   unknown color format %sN(   t   typet   mcolorst   colorConvertert   to_rgbaRÒ   R   R   (   RÑ   t   num(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyt
   get_colors1  s    c         C   s¢   t  |  t | ƒ ƒ }  | j d k rž t t | ƒ t | ƒ ƒ } d | | ƒ d } g  t |  | ƒ D]2 \ } } | d | d | d | d | f ^ qc }  n  |  S(   s6   Modify the alphas of the color list according to depthi    i   gffffffæ?i   i   (   RÙ   R   R˜   R
   R`   R    RO   (   R   R=   t   normt   satsRÑ   Rw   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyR•   D  s    K(6   R4   t
   matplotlibR    R   R   R   Ru   R   RÕ   t   matplotlib.collectionsR   R   R   R   t   matplotlib.cmR   t   matplotlib.patchesR	   t   matplotlib.colorsR
   t   matplotlib.cbookR   t   warningst   numpyR   R'   R$   R   R   R   R   R   R7   R9   R8   RI   RU   RY   RZ   Rj   Rk   R|   R…   R†   R‰   RŠ   Rš   R›   RÌ   RB   RÎ   RÒ   RÙ   R•   (    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.pyt   <module>	   sF   ""			#+&	
	,
¥				