Code

Super duper mega (fun!) commit: replaced encoding=utf-8 with fileencoding=utf-8 in...
[inkscape.git] / share / extensions / ffgeom.py
old mode 100755 (executable)
new mode 100644 (file)
index ab2c74b..ef8799b
 """
 import math
 try:
-       NaN = float('NaN')
+    NaN = float('NaN')
 except ValueError:
-       PosInf = 1e300000
-       NaN = PosInf/PosInf
+    PosInf = 1e300000
+    NaN = PosInf/PosInf
 
 class Point:
-       precision = 5
-       def __init__(self, x, y):
-               self.__coordinates = {'x' : float(x), 'y' : float(y)}
-       def __getitem__(self, key):
-               return self.__coordinates[key]
-       def __setitem__(self, key, value):
-               self.__coordinates[key] = float(value)
-       def __repr__(self):
-               return '(%s, %s)' % (round(self['x'],self.precision),round(self['y'],self.precision))
-       def copy(self):
-               return Point(self['x'],self['y'])
-       def translate(self, x, y):
-               self['x'] += x
-               self['y'] += y
-       def move(self, x, y):
-               self['x'] = float(x)
-               self['y'] = float(y)
+    precision = 5
+    def __init__(self, x, y):
+        self.__coordinates = {'x' : float(x), 'y' : float(y)}
+    def __getitem__(self, key):
+        return self.__coordinates[key]
+    def __setitem__(self, key, value):
+        self.__coordinates[key] = float(value)
+    def __repr__(self):
+        return '(%s, %s)' % (round(self['x'],self.precision),round(self['y'],self.precision))
+    def copy(self):
+        return Point(self['x'],self['y'])
+    def translate(self, x, y):
+        self['x'] += x
+        self['y'] += y
+    def move(self, x, y):
+        self['x'] = float(x)
+        self['y'] = float(y)
 
 class Segment:
-       def __init__(self, e0, e1):
-               self.__endpoints = [e0, e1]
-       def __getitem__(self, key):
-               return self.__endpoints[key]
-       def __setitem__(self, key, value):
-               self.__endpoints[key] = value
-       def __repr__(self):
-               return repr(self.__endpoints)
-       def copy(self):
-               return Segment(self[0],self[1])
-       def translate(self, x, y):
-               self[0].translate(x,y)
-               self[1].translate(x,y)
-       def move(self,e0,e1):
-               self[0] = e0
-               self[1] = e1
-       def delta_x(self):
-               return self[1]['x'] - self[0]['x']
-       def delta_y(self):
-               return self[1]['y'] - self[0]['y']
-       #alias functions
-       run = delta_x
-       rise = delta_y
-       def slope(self):
-               if self.delta_x() != 0:
-                       return self.delta_x() / self.delta_y()
-               return NaN
-       def intercept(self):
-               if self.delta_x() != 0:
-                       return self[1]['y'] - (self[0]['x'] * self.slope())
-               return NaN
-       def distanceToPoint(self, p):
-               s2 = Segment(self[0],p)
-               c1 = dot(s2,self)
-               if c1 <= 0:
-                       return Segment(p,self[0]).length()
-               c2 = dot(self,self)
-               if c2 <= c1:
-                       return Segment(p,self[1]).length()
-               return self.perpDistanceToPoint(p)
-       def perpDistanceToPoint(self, p):
-               len = self.length()
-               if len == 0: return NaN
-               return math.fabs(((self[1]['x'] - self[0]['x']) * (self[0]['y'] - p['y'])) - \
-                       ((self[0]['x'] - p['x']) * (self[1]['y'] - self[0]['y']))) / len
-       def angle(self):
-               return math.pi * (math.atan2(self.delta_y(), self.delta_x())) / 180
-       def length(self):
-               return math.sqrt((self.delta_x() ** 2) + (self.delta_y() ** 2))
-       def pointAtLength(self, len):
-               if self.length() == 0: return Point(NaN, NaN)
-               ratio = len / self.length()
-               x = self[0]['x'] + (ratio * self.delta_x())
-               y = self[0]['y'] + (ratio * self.delta_y())
-               return Point(x, y)
-       def pointAtRatio(self, ratio):
-               if self.length() == 0: return Point(NaN, NaN)
-               x = self[0]['x'] + (ratio * self.delta_x())
-               y = self[0]['y'] + (ratio * self.delta_y())
-               return Point(x, y)
-       def createParallel(self, p):
-               return Segment(Point(p['x'] + self.delta_x(), p['y'] + self.delta_y()), p)
-       def intersect(self, s):
-               return intersectSegments(self, s)
+    def __init__(self, e0, e1):
+        self.__endpoints = [e0, e1]
+    def __getitem__(self, key):
+        return self.__endpoints[key]
+    def __setitem__(self, key, value):
+        self.__endpoints[key] = value
+    def __repr__(self):
+        return repr(self.__endpoints)
+    def copy(self):
+        return Segment(self[0],self[1])
+    def translate(self, x, y):
+        self[0].translate(x,y)
+        self[1].translate(x,y)
+    def move(self,e0,e1):
+        self[0] = e0
+        self[1] = e1
+    def delta_x(self):
+        return self[1]['x'] - self[0]['x']
+    def delta_y(self):
+        return self[1]['y'] - self[0]['y']
+    #alias functions
+    run = delta_x
+    rise = delta_y
+    def slope(self):
+        if self.delta_x() != 0:
+            return self.delta_x() / self.delta_y()
+        return NaN
+    def intercept(self):
+        if self.delta_x() != 0:
+            return self[1]['y'] - (self[0]['x'] * self.slope())
+        return NaN
+    def distanceToPoint(self, p):
+        s2 = Segment(self[0],p)
+        c1 = dot(s2,self)
+        if c1 <= 0:
+            return Segment(p,self[0]).length()
+        c2 = dot(self,self)
+        if c2 <= c1:
+            return Segment(p,self[1]).length()
+        return self.perpDistanceToPoint(p)
+    def perpDistanceToPoint(self, p):
+        len = self.length()
+        if len == 0: return NaN
+        return math.fabs(((self[1]['x'] - self[0]['x']) * (self[0]['y'] - p['y'])) - \
+            ((self[0]['x'] - p['x']) * (self[1]['y'] - self[0]['y']))) / len
+    def angle(self):
+        return math.pi * (math.atan2(self.delta_y(), self.delta_x())) / 180
+    def length(self):
+        return math.sqrt((self.delta_x() ** 2) + (self.delta_y() ** 2))
+    def pointAtLength(self, len):
+        if self.length() == 0: return Point(NaN, NaN)
+        ratio = len / self.length()
+        x = self[0]['x'] + (ratio * self.delta_x())
+        y = self[0]['y'] + (ratio * self.delta_y())
+        return Point(x, y)
+    def pointAtRatio(self, ratio):
+        if self.length() == 0: return Point(NaN, NaN)
+        x = self[0]['x'] + (ratio * self.delta_x())
+        y = self[0]['y'] + (ratio * self.delta_y())
+        return Point(x, y)
+    def createParallel(self, p):
+        return Segment(Point(p['x'] + self.delta_x(), p['y'] + self.delta_y()), p)
+    def intersect(self, s):
+        return intersectSegments(self, s)
 
 def intersectSegments(s1, s2):
-       x1 = s1[0]['x']
-       x2 = s1[1]['x']
-       x3 = s2[0]['x']
-       x4 = s2[1]['x']
-       
-       y1 = s1[0]['y']
-       y2 = s1[1]['y']
-       y3 = s2[0]['y']
-       y4 = s2[1]['y']
-       
-       denom = ((y4 - y3) * (x2 - x1)) - ((x4 - x3) * (y2 - y1))
-       num1 = ((x4 - x3) * (y1 - y3)) - ((y4 - y3) * (x1 - x3))
-       num2 = ((x2 - x1) * (y1 - y3)) - ((y2 - y1) * (x1 - x3))
+    x1 = s1[0]['x']
+    x2 = s1[1]['x']
+    x3 = s2[0]['x']
+    x4 = s2[1]['x']
+    
+    y1 = s1[0]['y']
+    y2 = s1[1]['y']
+    y3 = s2[0]['y']
+    y4 = s2[1]['y']
+    
+    denom = ((y4 - y3) * (x2 - x1)) - ((x4 - x3) * (y2 - y1))
+    num1 = ((x4 - x3) * (y1 - y3)) - ((y4 - y3) * (x1 - x3))
+    num2 = ((x2 - x1) * (y1 - y3)) - ((y2 - y1) * (x1 - x3))
 
-       num = num1
+    num = num1
 
-       if denom != 0: 
-               x = x1 + ((num / denom) * (x2 - x1))
-               y = y1 + ((num / denom) * (y2 - y1))
-               return Point(x, y)
-       return Point(NaN, NaN)
+    if denom != 0: 
+        x = x1 + ((num / denom) * (x2 - x1))
+        y = y1 + ((num / denom) * (y2 - y1))
+        return Point(x, y)
+    return Point(NaN, NaN)
 
 def dot(s1, s2):
-       return s1.delta_x() * s2.delta_x() + s1.delta_y() * s2.delta_y()
+    return s1.delta_x() * s2.delta_x() + s1.delta_y() * s2.delta_y()
+
+
+# vim: expandtab shiftwidth=4 tabstop=8 softtabstop=4 fileencoding=utf-8 textwidth=99