;iPdZddlmZmZmZddlmZGddejZdS)z Point.py - Extension of QPointF which adds a few missing methods. Copyright 2010 Luke Campagnola Distributed under MIT/X11 license. See license.txt for more information. )atan2degreeshypot)QtCoreceZdZdZdZfdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZd"dZdZdZdZdZdZdZ d Z!d!Z"xZ#S)#Pointz6Extension of QPointF which adds a few missing methods.ct|dkrst|dtjtjfrnt t|dt|d dSt|dttfrJt t|dt|ddSt|ddrVt t|ddt|dddSnCt|dkr0t |d|ddSt j|dS)Nrr __getitem__) len isinstancerQSizeQSizeFsuper__init__floatwidthheightinthasattr)selfargs __class__s CC:\PYTHON\MyICR_Workspace\venv\Lib\site-packages\pyqtgraph/Point.pyrzPoint.__init__ss t99>>$q'FL&-#@AA   tAw}}!7!7tAw~~?O?O9P9PQQQDGc5\22   tAwtAw@@@a-00   tAwqz!2!2E$q'!*4E4EFFF YY!^^ GG  T!Wd1g . . . F$cdS)Nr r rs r__len__z Point.__len__!sqrc`t||ffSN)r xyrs r __reduce__zPoint.__reduce__$s"$&&((+,,rc|dkr|S|dkr|Stdt|zNrrzPoint has no index %s)r#r$ IndexErrorstr)ris rr zPoint.__getitem__'sH 666688O !VV6688O4s1vv=>> >rc#bK|V|VdSr"r#r$rs r__iter__zPoint.__iter__/s,ffhhffhhrc|dkr||S|dkr||Stdt|zr')setXsetYr(r))rr*r#s r __setitem__zPoint.__setitem__3sN 6699Q<<  !VV99Q<< 4s1vv=>> >rc.|d|S)N__radd___math_ras rr3zPoint.__radd__;{{:q)))rc.|d|S)N__add__r4r6s rr:z Point.__add__>{{9a(((rc.|d|S)N__rsub__r4r6s rr=zPoint.__rsub__Ar8rc.|d|S)N__sub__r4r6s rr?z Point.__sub__Dr;rc.|d|S)N__rmul__r4r6s rrAzPoint.__rmul__Gr8rc.|d|S)N__mul__r4r6s rrCz Point.__mul__Jr;rc.|d|S)N__rdiv__r4r6s rrEzPoint.__rdiv__Mr8rc.|d|S)N__div__r4r6s rrGz Point.__div__Pr;rc.|d|S)N __truediv__r4r6s rrIzPoint.__truediv__Ss{{=!,,,rc.|d|S)N __rtruediv__r4r6s rrKzPoint.__rtruediv__Vs{{>1---rc.|d|S)N__rpow__r4r6s rrMzPoint.__rpow__Yr8rc.|d|S)N__pow__r4r6s rrOz Point.__pow__\r;rc`t|tjst|}tt |||t |||Sr")rrQPointFr getattrr#r$)ropr#s rr5z Point._math__s{!V^,, aA*WTVVXXr**13355113H746688R3H3H3O3OPPPrcjt||S)z(Returns the vector length of this Point.)rr#r$rs rlengthz Point.lengthds"TVVXXtvvxx(((rc0||z S)z8Returns a vector in the same direction with unit length.)rUrs rnormz Point.normhsdkkmm##rrct||t||z }|dkr|St|S)a Returns the angle in degrees from the vector a to self. Parameters ---------- a : Point, QPointF or QPoint The Point to return the angle with units : str, optional The units with which to compute the angle with, "degrees" or "radians", default "degrees" Returns ------- float The angle between two vectors radians)rr$r#r)rr7unitsradss ranglez Point.anglels^"TVVXXtvvxx((5+>+>> I  Kt}}rct|tjst|}t||S)z,Returns the dot product of a and this Point.)rrrQr dotProductr6s rdotz Point.dots7!V^,, aAa(((rct|tjst|}||z||zz S)z-Returns the cross product of a and this Point)rrrQr r#r$r6s rcrossz Point.crosssV!V^,, aAvvxx!##%%$&&((QSSUU"222rcZ|}|||zS)z6Return the projection of this vector onto the vector b)rWr_)rbb1s rprojz Point.projs$ VVXXxx||b  rcXd||fzS)Nz Point(%f, %f)r,rs r__repr__zPoint.__repr__s"$&&((DFFHH!555rcjt||Sr")minr#r$rs rriz Point.min"46688TVVXX&&&rcjt||Sr")maxr#r$rs rrlz Point.maxrjrc t|Sr")r rs rcopyz Point.copysT{{rc*|Sr")toPointrs rtoQPointzPoint.toQPoints||~~r)r)$__name__ __module__ __qualname____doc__ __slots__rr r%r r-r1r3r:r=r?rArCrErGrIrKrMrOr5rUrWr\r_rarergrirlrnrq __classcell__)rs@rr r s@@I     ---??????***)))***)))***)))***)))---...***)))QQQ )))$$$,))) 333 !!! 666''''''rr N) rumathrrrQtrrQr r rrrzs '&&&&&&&&&TTTTTFNTTTTTr