
    CPc                         d Z ddlZddlmZmZmZmZmZmZ ddl	Z	ddl
mZ  ed          \  ZZd Zd Zd Zd	 Zd
 Zd Zd Z G d de	j                  Zedk    r e                                             dS dS )ae  
This extension allows you to draw a triangle given certain information
 about side length or angles.

Measurements of the triangle

         C(x_c,y_c)
        /`__
       / a_c``--__
      /           ``--__ s_a
 s_b /                  ``--__
    /a_a                    a_b`--__
   /--------------------------------``B(x_b, y_b)
  A(x_a,y_a)         s_b
    N)acosasincospisinsqrt)inkex_gettext   c                 Z   dt          |          dd}|                    t          j                              } |j        d	i ||dt          | t
                   |t
                   z             z   dz   t          | t                   |t                   z             z   dz   t          |t
                   |t
                   z             z   dz   t          |t                   |t                   z             z   dz   t          |t
                   |t
                   z             z   dz   t          |t                   |t                   z             z   dz   t          | t
                   |t
                   z             z   dz   t          | t                   |t                   z             z   dz   d |S )
Nz#000000none)strokezstroke-widthfillzM ,z L z z)stylezinkscape:labeld )straddinkexPathElementupdateXY)	point1point2point3offsetwidthnameparentr   elems	            */usr/share/inkscape/extensions/triangle.pydraw_SVG_trir#   -   s    #e**fMME::e'))**DDK  "&)fQi'(() &)fQi'(() 	
 &)fQi'(()  &)fQi'(()  &)fQi'((	) 
 &)fQi'(()  &)fQi'(()  &)fQi'(()  !
 
  . K    c                 T    | | z  ||z  z   ||z  z
  d| z  |z  z  }t          |          S )Nr
   )r   )abccosxs       r"   angle_from_3_sidesr*   J   s5    EAEMAE!a!eai0D::r$   c                 x    | | z  ||z  z   d| z  |z  t          |          z  z
  }|dk    rt          |          S dS )Nr
   r   )r   r   )s_as_ba_c	c_squareds       r"   third_side_from_enclosed_angler0   O   sF    c	C#I%C#C(@@I1}}Iqr$   c                 R    | t          |          z  }| t          |          z  }||gS N)r   r   )radiusanglexys       r"   
pt_on_circr7   W   s+    UAUAq6Mr$   c                 n    | t                    |t                    z   | t                   |t                   z   gS r2   )r   r   )r   r   s     r"   v_addr9   ]   s'    1Iq	!6!9vay#899r$   c                 \    | |z   |k    o#| |z   |k    o||z   | k    o| dk    o|dk    o|dk    S )Nr   r   )r&   r'   r(   s      r"   is_valid_tri_from_sidesr;   a   sJ     
Q!QQ!QQ!QAQ!a%QAPQEr$   c           	         t          | ||          rt          | ||          }d}t          ||df          }t          |t          | t          |z
                      }	|	d          |	d<   t          |d         |	d                   dz  }
|	d         dz  }|d         |
z
  |d         |z
  f}t          |||	||d|           d S t          j        t          d                     d S )N)r   r   r      r
   Trianglez Invalid Triangle Specifications.)
r;   r*   r9   r7   r   maxr#   r   errormsg_)r,   r-   s_cr   r   r    a_br&   r'   r(   offxoffys               r"   draw_tri_from_3_sidesrF   j   s     sC-- > c3//!c1X!ZR#X..//!u!1Q41"tax1I1I

 	Q1feZ@@@@@q;<<=====r$   c                       e Zd Zd Zd ZdS )r>   c                    |                     dt          dd           |                     dt          dd           |                     dt          dd           |                     d	t          d
d           |                     dt          dd           |                     dt          dd           |                     ddd           d S )Nz--s_ag      Y@zSide Length a)typedefaulthelpz--s_bzSide Length bz--s_czSide Length cz--a_ag      N@zAngle az--a_bg      >@zAngle bz--a_cg     V@zAngle cz--mode3_sides)rJ   rK   )add_argumentfloat)selfparss     r"   add_argumentszTriangle.add_arguments   s    'u?SSS'u?SSS'u?SSS't)LLL't)LLL't)LLL(IOLLLLLr$   c                    | j                                         }| j         j        j        }| j                             t          | j        j                  dz             | j        _        | j                             t          | j        j                  dz             | j        _        | j                             t          | j        j	                  dz             | j        _	        | j                             d          }| j        j
        dk    r:| j        j        }| j        j        }| j        j	        }t          ||||||           d S | j        j
        dk    rV| j        j        }| j        j        }| j        j        t          z  dz  }t          |||          }t          ||||||           d S | j        j
        dk    rX| j        j        }| j        j        }| j        j        t          z  dz  }|t          dz  k     r||k     r||t!          |          z  k    rd}	nd	}	|t!          |          z  |z  }
|
d
k    r%|
dk    rt#          |
          }t          |z
  |z
  }d	}n!t$          j                            d           d}|s;|t          k     r0|t          k     r%t          |||          }t          ||||||           |sV|t          k    s|t          k    s|	r@t          |z
  }t          |z
  |z
  }t          |||          }t          ||||||           d S d S d S | j        j
        dk    r| j        j        }| j        j        t          z  dz  }| j        j        t          z  dz  }t          |z
  |z
  }|t!          |          z  t!          |          z  }|t!          |          z  t!          |          z  }t          ||||||           d S | j        j
        dk    r| j        j	        }| j        j        t          z  dz  }| j        j        t          z  dz  }t          |z
  |z
  }|t!          |          z  t!          |          z  }|t!          |          z  t!          |          z  }t          ||||||           d S d S )Npx2pxrL   s_ab_a_c   s_ab_a_ag       @TFr=   z'Error:Invalid Triangle Specifications.
s_a_a_abs_c_a_ab)svgget_current_layer	namedviewcenterunittouur   optionsr,   r-   rB   moderF   r.   r   r0   a_ar   r   sysstderrwriterC   )rO   trir   stroke_widthr,   r-   rB   r.   rb   	ambiguoussin_a_brC   errors                r"   effectzTriangle.effect   sJ   h((**#*8,,S1A-B-BT-IJJ8,,S1A-B-BT-IJJ8,,S1A-B-BT-IJJx((//<	)),"C,"C,"C!#sCsKKKKK\*,,,"C,"C,"R'#-C0c3??C!#sCsKKKKK\*,,,"C,"C,"R'#-C rCxcCiicC#c((N6J6J 		!	CHHns*G17b==7mm3hn
  >    P"RxxcBhh4S#sCC%c3V\3OOO PrsRxxIx3h3hn4S#sCC%c3V\3OOOOOP P'x \*,,,"C,"R'#-C,"R'#-Cs(S.CC.3s88+CC.3s88+C!#sCsKKKKK\*,,,"C,"R'#-C,"R'#-Cs(S.CC.3s88+CC.3s88+C!#sCsKKKKK -,r$   N)__name__
__module____qualname__rQ   rk   r   r$   r"   r>   r>      s?        M M MPL PL PL PL PLr$   r>   __main__)__doc__rc   mathr   r   r   r   r   r   r   inkex.localizationr	   rA   ranger   r   r#   r*   r0   r7   r9   r;   rF   EffectExtensionr>   rl   runr   r$   r"   <module>rv      sN  (   


 / / / / / / / / / / / / / / / /  1 1 1 1 1 1uQxx1  :  
    : : :  > > >.ZL ZL ZL ZL ZLu$ ZL ZL ZLz zHJJNN r$   