Display power usage per hour.
[tabakrolletjie.git] / tabakrolletjie / rays.py
index 7c8b5beab712c0fe756afbb7645afc92fc3b563c..8a79c34c57b4c3ff89a7d31681c1c5ec0915f385 100644 (file)
@@ -88,6 +88,8 @@ class RayPolyManager(object):
         self._start = None  # normal vector in direction of start angle limit
         self._end = None  # normal vector in direction of end angle limit
         self._set_angle_limits(direction, spread)
+        if direction:
+            self.direction = direction  # Update direction
         self._max_radius = None  # maximum radius in pixels
         self._min_radius = None  # minimum radius in pixels
         self._set_radius_limits(radius_limits)
@@ -128,7 +130,7 @@ class RayPolyManager(object):
         self._min_radius = value or 0.0
 
     def reaches(self, position):
-        distance = self.position.get_distance(self.position)
+        distance = self.position.get_distance(position)
         return (self._min_radius <= distance <= self._max_radius)
 
     def _set_radius_limits(self, radius_limits):
@@ -146,6 +148,8 @@ class RayPolyManager(object):
 
     @property
     def direction(self):
+        if self._direction is None:
+            return 0
         return self._direction.angle_degrees
 
     @direction.setter
@@ -156,6 +160,12 @@ class RayPolyManager(object):
         self._end = self._direction.rotated(-spread)
         self._poly_cache = None
 
+    @property
+    def spread(self):
+        if not self._direction:
+            return 2 * math.pi
+        return math.fabs(self._start.get_angle_between(self._end))
+
     def _set_angle_limits(self, direction, spread):
         if direction is None or spread is None:
             self._direction = None