Ñò ‘Jc @südZddklZlZlZlZddk l Z l Z l Z l Z ddklZddklZddklZddklZddkZddkZddkZd „Zd „Zd „Zd eifd „ƒYZddd„Zdei fd„ƒYZ!ddd„Z"ddd„Z#ddd„Z$de fd„ƒYZ%ddd„Z&defd„ƒYZ'd„Z(ddd„Z)de fd„ƒYZ*ddd„Z+d e fd!„ƒYZ,ddd"„Z-d#„Z.d$„Z/d%„Z0d&„Z1dS('sx Module containing 3D artist code and functions to convert 2D artists into 3D versions which can be added to an Axes3D. iÿÿÿÿ(tlinesttexttpathtcolors(t CollectiontLineCollectiontPolyCollectiontPatchCollection(tScalarMappable(tPatch(t Normalize(titerableNcCs-|dd}|djo|d}n|S(s"Return angle between -180 and +180ihi´((ta((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyt norm_angles cCs-|dd}|djo|d}n|S(s Return angle between -90 and +90i´iZ((R ((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pytnorm_text_angles cCs¡|djotidƒS|djotid ƒS|djotid ƒS|djotid ƒSt|ƒot|ƒdjo|Stdƒ‚dS( Ntxiitytzis2'x', 'y', 'z', None or vector of length 3 expected(iii(iii(iii(iii(tnptarraytNoneR tlent ValueError(tzdir((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pytget_dir_vector$s     tText3DcBs>eZdZdddddd„Zddd„Zd„ZRS(sE Text object with 3D position and (in the future) direction. itRcCs-tii||||ƒ|i||ƒdS(N(tmtexttTextt__init__tset_3d_properties(tselfRRRRR((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyR7scCs@|iƒ\}}ti|||fƒ|_t|ƒ|_dS(N(t get_positionRRt _position3dRt_dir_vec(RRRRR((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyR;scCsèti|i|i|ig|iƒ}|dd|dd}|dd|dd}|djo|djo d}ntiti||ƒƒ}|i|dd|ddfƒ|i t |ƒƒt i i ||ƒdS(Niig(tproj3dtproj_trans_pointsR!R"tMtmathtdegreestatan2t set_positiont set_rotationRRRtdraw(Rtrenderertprojtdxtdytangle((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyR+@s  #(t__name__t __module__t__doc__RRR+(((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyR2siRcCst|_|i||ƒdS(s"Convert a Text to a Text3D object.N(Rt __class__R(tobjRR((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyt text_2d_to_3dNs tLine3DcBs/eZdZd„Zddd„Zd„ZRS(s 3D line object. cOs2tii|gg||Ž|||f|_dS(N(RtLine2DRt_verts3d(Rtxstystzstargstkwargs((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyRXsiRc Cso|iƒ}|iƒ}y1t|ƒ}g}|D] }||q2~}WnnXt||||ƒ|_dS(N(t get_xdatat get_ydatatfloatt juggle_axesR9(RR<RR:R;t_[1]R((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyR\s   %cCs]|i\}}}ti||||iƒ\}}}|i||ƒtii||ƒdS(N(R9R#tproj_transformR%tset_dataRR8R+(RR,txs3dtys3dtzs3dR:R;R<((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyR+gs$(R1R2R3RRR+(((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyR7Ss  cCst|_|i||ƒdS(s" Convert a 2D line to 3D. N(R7R4R(tlineR<R((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyt line_2d_to_3dms c CsÇt|ƒptit|ƒƒ|}ng}|idtdtƒ}x?t||ƒD].\\\}}}}|i|||fƒqXWg} |D]%\}}}| t||||ƒq•~ } | S(sConvert a path to a 3D segment.tsimplifytcurves( R RtonesRt iter_segmentstFalsetziptappendRB( RR<RtsegtpathsegsRRtcodeRRCtseg3d((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pytpath_to_3d_segmentts 9cCsmt|ƒptit|ƒƒ|}ng}x6t||ƒD]%\}}|it|||ƒƒq@W|S(s@ Convert paths from a collection object to 3D segments. (R RRMRRPRQRV(tpathsR<RtsegmentsRtpathz((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pytpaths_to_3d_segmentss  tLine3DCollectioncBs5eZdZd„Zd„Zd„Zed„ZRS(s# A collection of 3D lines. cOsti||||ŽdS(N(RR(RRXR=R>((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyR“scCs||_ti|gƒdS(s! Set 3D segments N(t _segments3dRt set_segments(RRX((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyR]–s c Cs¯g}|iD]}|ti||iƒq~}g}|D]\}}}|t||ƒq>~} ti|| ƒd} x,|D]$\}}}t| t|ƒƒ} qƒW| S(sB Project the points according to renderer matrix. geÍÍA(R\R#R$R%RPRR]tmin( RR,RCtpointstxyslistt_[2]R:R;R<t segments_2dtminz((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pytdo_3d_projections,3cCs,|o|i|ƒnti||ƒdS(N(RdRR+(RR,tproject((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyR+¬s(R1R2R3RR]RdROR+(((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyR[Žs    cCs2t|iƒ||ƒ}t|_|i|ƒdS(s6Convert a LineCollection to a Line3DCollection object.N(RZt get_pathsR[R4R](tcolR<Rt segments3d((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pytline_collection_2d_to_3d±s tPatch3DcBsJeZdZd„Zddd„Zd„Zd„Zd„Zd„ZRS( s 3D patch object. cOsK|idgƒ}|iddƒ}ti|||Ž|i||ƒdS(NR<RR(tpopR RR(RR=R>R<R((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyR¼siRcCsˆt|ƒptit|ƒƒ|}ng}t||ƒD](\\}}}|t||||ƒq>~|_ti|ƒ|_ dS(N( R RRMRRPRBt _segment3dR t get_facecolort _facecolor3d(RtvertsR<RRCRRR((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyRÂs  AcCs|iS(N(t_path2d(R((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pytget_pathÊscCs|iS(N(t _facecolor2d(R((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyRmÍsc Csv|i}t|Œ\}}}ti||||iƒ\}}}} tit||ƒƒ|_|i|_ t |ƒS(N( RlRPR#tproj_transform_clipR%tmpathtPathRpRnRrR^( RR,tsR:R;R<tvxstvystvzstvis((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyRdÐs  ' cCsti||ƒdS(N(R R+(RR,((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyR+Ùs( R1R2R3RRRqRmRdR+(((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyRj·s    cCsE|iƒ}|iƒ}|i|ƒ}t|ƒo |dSgSdS(s2Return a list of vertices for the path of a patch.iN(tget_patch_transformRqt to_polygonsR(tpatchttransRtpolygons((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pytget_patch_vertsÜs     cCs,t|ƒ}t|_|i|||ƒdS(s$Convert a Patch to a Patch3D object.N(R€RjR4R(R}RRRo((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pytpatch_2d_to_3dæs  tPatch3DCollectioncBs2eZdZd„Zd„Zd„Zd„ZRS(s% A collection of 3D patches. cOsti|||ŽdS(N(RR(RR=R>((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyRñscCsRt|iƒŒ\}}t||||ƒ|_|iƒ|_|iƒ|_dS(N(RPt get_offsetsRBt _offsets3dRmRnt get_edgecolort _edgecolor3d(RR<RR:R;((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyRôsc Cs—|i\}}}ti||||iƒ\}}}}d|_|it|i|ƒƒ|i t|i |ƒƒt i |t ||ƒƒt|ƒS(N(R„R#RsR%Rt_alphatset_facecolorstzalphaRntset_edgecolorsR†Rt set_offsetsRPR^( RR,R:R;R<RwRxRyRz((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyRdús' cCsti||ƒdS(N(RR+(RR,((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyR+s(R1R2R3RRRdR+(((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyR‚ìs    cCst|_|i||ƒdS(s8Convert a PatchCollection to a Patch3DCollection object.N(R‚R4R(RgR<R((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pytpatch_collection_2d_to_3ds tPoly3DCollectioncBsŒeZdZd„Zd„Zed„Zd„Zd„Zd„Z d„Z e Z d„Z e Z d „ZeZd „ZeZd „ZRS( s& A collection of 3D polygons. cOs,ti||||Žd|_d|_dS(sÇ Create a Poly3DCollection. *verts* should contain 3D coordinates. Note that this class does a bit of magic with the _facecolors and _edgecolors properties. iN(RRt_zsortRt _sort_zpos(RRoR=R>((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyRs  c Cs´d}d}g}g}xD|D]<}|i|ƒ|t|ƒ}|i||fƒ|}qWt|Œ\}}} tit|ƒƒ} ti||| | gƒ|_||_dS(sOptimize points for projectioniN( textendRRQRPRRMRt_vect_segis( RRhtsiteitsegisR_tpR:R;R<RM((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyt get_vector s  cCs$|i|ƒti|g|ƒdS(sSet 3D vertices.N(R—Rt set_verts(RRotclosed((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyR˜0s cCs:d|_d|_ti|ƒ|_ti|ƒ|_dS(Ni(RŽRRRtget_facecolorst _facecolors3dtget_edgecolorst _edgecolors3d(R((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyR6s  cCs ||_dS(N(R(Rtval((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyt set_sort_zpos<scCsï|idj o|iƒ|i|_nti|i|iƒ\}}}g}|i D]1\}}||||!|||!|||!fqY~}|i} |i } t | ƒt |ƒjo| i t |ƒddƒ} nt | ƒt |ƒjo<t | ƒdjo | } n| i t |ƒddƒ} n|i otg} t|| | ƒD]=\\} } }}}| ti|ƒt| | ƒ||fqS~ }|idd„ƒn td‚g}|D]\}}}}||qÄ~}ti||ƒg}|D]\}}}}||q~|_t |i ƒt | ƒjo4g}|D]\}}}}||qM~|_n |i |_|idj oLtidgdg|igdggƒ}ti||iƒ}|ddSti|ƒSdS( s< Perform the 3D projection for this object. taxisitcmpcSst|d|dƒS(i(R¡(RR((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pytZstwhoopsiiN(t_ARtupdate_scalarmappablet _facecolorsR›R#tproj_transform_vecR‘R%R’RRtrepeatRŽRPRtaveragetsortRRR˜t _facecolors2dt _edgecolors2dRRR^(RR,ttxsttysttzsRCR“R”txyzlisttcfacetcedgeRaR:R;R<tfctect z_segments_2dt_[3]RRvRbt_[4]t_[5]tzvectztrans((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyRd?s< !A    V -04 * cCs&ti||ƒti|ƒ|_dS(N(Rt set_facecolorRmR›(RR((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyR»oscCs&ti||ƒti|ƒ|_dS(N(Rt set_edgecolorR…R(RR((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyR¼tscCs|iS(N(R«(R((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyRšyscCs|iS(N(R¬(R((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyRœ}scCsti||ƒS(N(RR+(RR,((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyR+s(R1R2R3RR—tTrueR˜RRŸRdR»RˆR¼RŠRšRmRœR…R+(((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyR s       0    cCs<t|iƒ||ƒ}t|_|i|ƒ|iƒdS(s6Convert a PolyCollection to a Poly3DCollection object.N(RZRfRR4R˜R(RgR<Rt segments_3d((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pytpoly_collection_2d_to_3d„s  cCsG|djo|||fS|djo|||fS|||fSdS(s* Reorder coordinates so that zdir RRN((R:R;R<R((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyRB‹s   cCsVy;t|ƒdjpt|ƒdjot|ddƒSWntj otSXdS(Niiit __float__(Rthasattrt IndexErrorRO(tc((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pytiscolor–s;cCs«t|ƒtdƒjotii|ƒ}nt|ƒo |g|St|ƒ|jo|St|ƒo |g|St|dƒo|dg|Std|‚dS(s=Stretch the color argument to provide the required number numtstringisunknown color format %sN(ttypetmcolorstcolorConvertertto_rgbaRÄRR(RÃtnum((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyt get_colorsœs    cCs˜t|t|ƒƒ}tt|ƒt|ƒƒ}d||ƒd}g}t||ƒD]3\}}||d|d|d|d|fqX~}|S(s6Modify the alphas of the color list according to depthigffffffæ?iii(RËRR R^tmaxRP(RR<tnormtsatsRCRÃRv((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyR‰­s P(2R3t matplotlibRRRRRtRRÇtmatplotlib.collectionsRRRRt matplotlib.cmRtmatplotlib.patchesR tmatplotlib.colorsR tmatplotlib.cbookR tnumpyRR&R#R RRRRR6R8R7RJRVRZR[RiRjR€RR‚RŒRR¿RBRÄRËR‰(((s@/usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyts>""        #% w