diff --git a/exp/geometry.py b/exp/geometry.py --- a/exp/geometry.py +++ b/exp/geometry.py @@ -28,6 +28,18 @@ class Line: """ax + by + c = 0""" return (self._cos, self._sin, -self._d) + def toPoints(self): + (a,b,c)=self.toNormal() + assert a!=0 or b!=0 + if a==0: + y=-c/b + return (EPoint(0,y),EPoint(10,y)) + elif b==0: + x=-c/a + return (EPoint(x,0),EPoint(x,10)) + else: + return (EPoint(0,-c/b),EPoint(-c/a,0)) + def intersect(self,line): if self._alpha==line._alpha: return None (a,b,c)=self.toNormal() @@ -51,6 +63,10 @@ class Line: c_=-a*x_-b*y_ return Line.fromNormal(a,b,c_) + def transform(self,matrix): + transformed=(p.transform(matrix) for p in self.toPoints()) + return Line.fromPoints(*transformed) + @property def alpha(self): return self._alpha