OwlCyberSecurity - MANAGER
Edit File: axes3d.cpython-38.pyc
U ��]s� � @ s& d Z ddlmZ ddlmZ ddlZddlZddlm Z ddl mZ ddl mZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl mZm Z ddlm!Z!m"Z" ddlm#Z# dd l$m%Z% d dl&m'Z' d dl&m(Z( d d l&m)Z) dd� Z*G dd� de�Z+ddd�Z,ej-�.e+� dS )aR axes3d.py, original mplot3d version by John Porter Created: 23 Sep 2005 Parts fixed by Reinier Heeres <reinier@heeres.eu> Minor additions by Ben Axelrod <baxelrod@coroware.com> Significant updates and revisions by Ben Root <ben.v.root@gmail.com> Module containing Axes3D, an object which can plot 3D objects on a 2D matplotlib figure. � )�defaultdict)�reduceN)�artist)�Axes�rcParams)� Normalize�LightSource)�Bbox)� Triangulation� )�art3d)�proj3d)�axis3dc C s t t�ddgddgg��} | S �Nr r )r �np�array)Zbox� r �=/usr/lib/python3/dist-packages/mpl_toolkits/mplot3d/axes3d.py� unit_bbox% s r c s e Zd ZdZdZe�� Zej d�dddddd�� fdd ��Z d d� Zdd � Zdd� Z dd� Zd� fdd� Z� fdd�Zdd� Zdd� Z� fdd�Zd�dd�Zd�dd�Zd�d d!�Zej� fd"d#��Zd$d%� Zd�d'd(�Zd)d*� Z� fd+d,�Zd-d.� Z� fd/d0�Zd1d2� Z d3d4� Z!dddd5d6�d7d8�Z"d�d:d;�Z#d�d<d=�Z$d�d>d?�Z%d@dA� Z&d�dBdC�Z'd�dddD�dEdF�Z(e(Z)d�dddG�dHdI�Z*e*Z+d�dddJ�dKdL�Z,e,Z-dMdN� Z.e/j0j1je._e.Z1e1jdk �r�e1 jdO7 _dPdQ� Z2e/j0j3je2_e2Z3e3jdk �r�e3 jdR7 _dSdT� Z4e4Z5dUdV� Z6dWdX� Z7e/j0j7jdk �r0e/j0j7jdY e7_dZd[� Z8e/j0j8jdk �rXe/j0j8jdY e8_d\d]� Z9d^d_� Z:d�d`da�Z;dbdc� Z<ddde� Z=dfdg� Z>d�dhdi�Z?d�djdk�Z@dldm� ZAdndo� ZBd�dpdq�ZCdrds� ZDdtdu� ZEd�dxdy�ZFdzd{� ZGd|d}� ZH� fd~d�ZId�d�� ZJd�d�� ZKd�d�� ZLd�d�� ZMd�d�� ZNd�d�� ZOd�d�d��ZPd�d�� ZQd�d�� ZRd�d�� ZSd�d�d��ZTd�ddd9d��d�d��ZUd�d�d��ZVd� fd�d�� ZWd�d�� ZXd�d�� ZYd�d�� ZZd�d�d��Z[d�� fd�d�� Z\e\Z]e0j\Z^d�d��� fd�d�� Z_e_Z`ddddd��d�d��Zad�d�� Zbd�d�d��Zcd�d�� Zddddddd��d�d��Zed�d�d��Zfd�d�d��Zgd�d�d��Zhd&d�d�dd��� fd�d�� ZieiZjd&d�d�dd��� fd�dÄ Zkd�ddĜ� fd�dƄ ZlelZmd�ddĜ� fd�dȄ Znd�� fd�d˄ Zod�� fd�d΄ ZpepZqd�� fd�dЄ Zrd�d�dӄZsd�� fd�dք Ztdvd�d�d&dٜd�dۄZueuZvddd5ddܜd�dބZw� ZxS ( �Axes3Dz 3D axes object. Z3dNi���� �persp)�azim�elev�zscale�sharez� proj_typec s� |dkrddddg}g � _ |� _|� _� �|� t� � _t� � _t� � _t� � _� � � j� j� d� _ |� _|dk r�� j� � |� d� _t� j||f|�ddi| �� t� �� � �� d� _d� _|dk rֈ �|� � jdk r�� jj�d� fd d ��� _nd� _d� _ � �� � �� � j�d� � j�� � dd g�} | d | d \� _!� _"� j#�$� � � j%�&� D ]}� j%| �'d� �qfdS )a Parameters ---------- fig : Figure The parent figure. rect : (float, float, float, float) The ``(left, bottom, width, height)`` axes position. azim : float, optional Azimuthal viewing angle, defaults to -60. elev : float, optional Elevation viewing angle, defaults to 30. zscale : [%(scale)s], optional The z scale. Note that currently, only a linear scale is supported. sharez : Axes3D, optional Other axes to share z-limits with. proj_type : {'persp', 'ortho'} The projection type, default 'persp'. Notes ----- .. versionadded:: 1.2.1 The *sharez* parameter. Ng g �?r ZdatalimZframeonTzunits finalizec s � j dd�S )NT)�scalez)�_on_units_changedr ��selfr r �<lambda>t � z!Axes3D.__init__.<locals>.<lambda>r )r r )r r F)(�_cids�initial_azim�initial_elev� set_proj_typer � xy_viewLim� zz_viewLim� xy_dataLim� zz_dataLim� view_init�_ready�_sharez�_shared_z_axes�joinZ_adjustable�super�__init__�set_axis_off�set_axis_on�M� fmt_zdata� set_zscale�zaxis� callbacksZconnectZ_zcid� mouse_init�set_top_view�patchZ set_linewidthZtransLimits�invertedZ transform� _pseudo_w� _pseudo_h�figureZadd_axesZspines�keysZset_visible)r ZfigZrectr r r r r �args�kwargsZpseudo_bbox�k�� __class__r r r1 1 sL �zAxes3D.__init__c C s d| _ d| _d S )NFT�� _axis3don�staler r r r r2 � s zAxes3D.set_axis_offc C s d| _ d| _d S )NTrF r r r r r3 � s zAxes3D.set_axis_onc C s | j �� p| j�� p| j�� S )zN Return *True* if units are set on the *x*, *y*, or *z* axes )�xaxis� have_units�yaxisr7 r r r r rJ � s �zAxes3D.have_unitsc C s | j �|�S )z� For artists in an axes, if the zaxis has units support, convert *z* using zaxis unit type .. versionadded :: 1.2.1 )r7 Z convert_units)r �zr r r �convert_zunits� s zAxes3D.convert_zunitsc s� t � j|||d� | jdks0| jdks0| jdkr4dS |dk rR| j�� sR| j�|� |dk r�|�d| jj�}|| jjkr�| j� |� |dk r�| j�|� dS )zT Look for unit *kwargs* and update the axis instances as necessary )�xdata�ydatarB N�zunits) r0 �_process_unit_inforI rK r7 rJ Zupdate_units�popZunitsZ set_units)r rN rO �zdatarB rP rD r r rQ � s zAxes3D._process_unit_infoc sT d| j }d| j }d| j }d| j }t� j| |d d� t� j| |d d� d S )Ngffffff�?g�������?��auto)�distr0 �set_xlim�set_ylim)r ZxdwlZxdwZydwlZydwrD r r r: � s zAxes3D.set_top_viewc C s� t �d| jj| jj| �| _t �d| jj| jj| �| _t � d| j j| jj| �| _| j| _ | j| _| j| _| j| j| jfD ]}|�� qvdS )z4Init 3D axes; overrides creation of regular X/Y axes�x�yrL N)r ZXAxisr'