diff --git a/exp/geometry.py b/exp/geometry.py --- a/exp/geometry.py +++ b/exp/geometry.py @@ -41,8 +41,24 @@ class Line: (a,b,c)=self.toNormal() return abs(a*point.x+b*point.y+c) # a**2 + b**2 == 1 for Hesse normal form - def __str__(self): return "({0},{1})".format(self._alpha,self._d) - def __repr__(self): return "Line({0},{1})".format(repr(self._alpha),repr(self._d)) + def shiftBasis(self,newBasis): + (a,b,c)=self.toNormal() + if a!=0: + point=EPoint(-c/a,0) + else: + point=EPoint(0,-c/b) + (x_,y_)=point-newBasis + c_=-a*x_-b*y_ + return Line.fromNormal(a,b,c_) + + @property + def alpha(self): return self._alpha + + @property + def d(self): return self._d + + def __str__(self): return "Line({0},{1})".format(round(self._alpha,3),round(self._d)) + def __repr__(self): return "Line({0},{1})".format(self._alpha,self._d) def angleDiff(alpha,beta):