dataset.py
Go to the documentation of this file.
00001 # Software License Agreement (BSD License)
00002 #
00003 # Copyright (c) 2009, Willow Garage, Inc.
00004 # All rights reserved.
00005 #
00006 # Redistribution and use in source and binary forms, with or without
00007 # modification, are permitted provided that the following conditions
00008 # are met:
00009 #
00010 #  * Redistributions of source code must retain the above copyright
00011 #    notice, this list of conditions and the following disclaimer.
00012 #  * Redistributions in binary form must reproduce the above
00013 #    copyright notice, this list of conditions and the following
00014 #    disclaimer in the documentation and/or other materials provided
00015 #    with the distribution.
00016 #  * Neither the name of Willow Garage, Inc. nor the names of its
00017 #    contributors may be used to endorse or promote products derived
00018 #    from this software without specific prior written permission.
00019 #
00020 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00021 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00022 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00023 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00024 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00025 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00026 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00027 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00028 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00029 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
00030 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00031 # POSSIBILITY OF SUCH DAMAGE.
00032 
00033 PKG = 'rxbag_plugins'
00034 import roslib; roslib.load_manifest(PKG)
00035 
00036 import bisect
00037 
00038 class DataSet(object):
00039     def __init__(self):
00040         self._points = []
00041         
00042         self._num_points = 0
00043 
00044         self._min_x = None
00045         self._max_x = None
00046         self._min_y = None
00047         self._max_y = None
00048 
00049     @property
00050     def points(self): return self._points
00051 
00052     @property
00053     def num_points(self): return self._num_points
00054 
00055     @property
00056     def min_x(self): return self._min_x
00057 
00058     @property
00059     def max_x(self): return self._max_x
00060 
00061     @property
00062     def min_y(self): return self._min_y
00063 
00064     @property
00065     def max_y(self): return self._max_y
00066 
00067     def add(self, x, y):
00068         pt = (x, y)
00069 
00070         index = bisect.bisect_right(self._points, pt)
00071 
00072         self._points.insert(index, pt)
00073 
00074         self._num_points += 1
00075 
00076         if self._num_points == 1:
00077             self._min_x = x
00078             self._max_x = x
00079             self._min_y = y
00080             self._max_y = y
00081         else:
00082             if x < self._min_x:
00083                 self._min_x = x
00084             elif x > self._max_x:
00085                 self._max_x = x
00086             if y < self._min_y:
00087                 self._min_y = y
00088             elif y > self._max_y:
00089                 self._max_y = y
00090 
00091     def set(self, pts):
00092         self._points = pts
00093         
00094         self._num_points = len(self._points)
00095 
00096         if self._num_points == 0:
00097             self._min_x = None
00098             self._max_x = None
00099             self._min_y = None
00100             self._max_y = None
00101         else:
00102             xs = [x for x, y in pts]
00103             ys = [y for x, y in pts]
00104             
00105             self._min_x = min(xs)
00106             self._max_x = max(xs)
00107             self._min_y = min(ys)
00108             self._max_y = max(ys)


rxbag_plugins
Author(s): Tim Field
autogenerated on Mon Jan 6 2014 11:54:21