00001 /*!@file BeoSub/BeeBrain/OceanObject.C information of objects to find */ 00002 // //////////////////////////////////////////////////////////////////// // 00003 // The iLab Neuromorphic Vision C++ Toolkit - Copyright (C) 2001 by the // 00004 // University of Southern California (USC) and the iLab at USC. // 00005 // See http://iLab.usc.edu for information about this project. // 00006 // //////////////////////////////////////////////////////////////////// // 00007 // Major portions of the iLab Neuromorphic Vision Toolkit are protected // 00008 // under the U.S. patent ``Computation of Intrinsic Perceptual Saliency // 00009 // in Visual Environments, and Applications'' by Christof Koch and // 00010 // Laurent Itti, California Institute of Technology, 2001 (patent // 00011 // pending; application number 09/912,225 filed July 23, 2001; see // 00012 // http://pair.uspto.gov/cgi-bin/final/home.pl for current status). // 00013 // //////////////////////////////////////////////////////////////////// // 00014 // This file is part of the iLab Neuromorphic Vision C++ Toolkit. // 00015 // // 00016 // The iLab Neuromorphic Vision C++ Toolkit is free software; you can // 00017 // redistribute it and/or modify it under the terms of the GNU General // 00018 // Public License as published by the Free Software Foundation; either // 00019 // version 2 of the License, or (at your option) any later version. // 00020 // // 00021 // The iLab Neuromorphic Vision C++ Toolkit is distributed in the hope // 00022 // that it will be useful, but WITHOUT ANY WARRANTY; without even the // 00023 // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR // 00024 // PURPOSE. See the GNU General Public License for more details. // 00025 // // 00026 // You should have received a copy of the GNU General Public License // 00027 // along with the iLab Neuromorphic Vision C++ Toolkit; if not, write // 00028 // to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, // 00029 // Boston, MA 02111-1307 USA. // 00030 // //////////////////////////////////////////////////////////////////// // 00031 // 00032 // Primary maintainer for this file: Michael Montalbo <montalbo@usc.edu> 00033 // $HeadURL: svn://isvn.usc.edu/software/invt/trunk/saliency/src/SeaBee/OceanObject.C $ 00034 // $Id: OceanObject.C 9057 2007-11-28 04:29:48Z beobot $ 00035 // 00036 00037 #include "OceanObject.H" 00038 00039 // ###################################################################### 00040 // Constructors 00041 OceanObject::OceanObject() 00042 { 00043 oceanObjectMutex = (pthread_mutex_t *)malloc(sizeof(pthread_mutex_t)); 00044 pthread_mutex_init(oceanObjectMutex,NULL); 00045 00046 itsPosition = Point3D(-1,-1,-1); 00047 itsOrientation = 0.0; 00048 itsFrequency = 0.0; 00049 itsDistance = 0.0; 00050 itsMass = 0.0; 00051 } 00052 00053 // ###################################################################### 00054 OceanObject::OceanObject(OceanObjectType type) 00055 { 00056 00057 oceanObjectMutex = (pthread_mutex_t *)malloc(sizeof(pthread_mutex_t)); 00058 pthread_mutex_init(oceanObjectMutex,NULL); 00059 00060 itsType = type; 00061 itsPosition = Point3D(-1,-1,-1); 00062 itsOrientation = 0.0; 00063 itsFrequency = 0.0; 00064 itsDistance = 0.0; 00065 itsMass = 0.0; 00066 } 00067 00068 00069 // ###################################################################### 00070 // Accessor methods 00071 void OceanObject::setStatus(OceanObjectStatus s) 00072 { 00073 pthread_mutex_lock(oceanObjectMutex); 00074 itsStatus = s; 00075 pthread_mutex_unlock(oceanObjectMutex); 00076 } 00077 00078 // ###################################################################### 00079 void OceanObject::setType(OceanObjectType t) 00080 { 00081 pthread_mutex_lock(oceanObjectMutex); 00082 itsType = t; 00083 pthread_mutex_unlock(oceanObjectMutex); 00084 } 00085 00086 // ###################################################################### 00087 void OceanObject::setPosition(Point3D pos) 00088 { 00089 pthread_mutex_lock(oceanObjectMutex); 00090 itsPosition = pos; 00091 pthread_mutex_unlock(oceanObjectMutex); 00092 } 00093 00094 // ###################################################################### 00095 void OceanObject::setOrientation(Angle ori) 00096 { 00097 pthread_mutex_lock(oceanObjectMutex); 00098 itsOrientation = ori; 00099 pthread_mutex_unlock(oceanObjectMutex); 00100 } 00101 00102 // ###################################################################### 00103 void OceanObject::setFrequency(float freq) 00104 { 00105 pthread_mutex_lock(oceanObjectMutex); 00106 itsFrequency = freq; 00107 pthread_mutex_unlock(oceanObjectMutex); 00108 } 00109 00110 // ###################################################################### 00111 void OceanObject::setDistance(float dist) 00112 { 00113 pthread_mutex_lock(oceanObjectMutex); 00114 itsDistance = dist; 00115 pthread_mutex_unlock(oceanObjectMutex); 00116 } 00117 00118 // ###################################################################### 00119 void OceanObject::setMass(float mass) 00120 { 00121 pthread_mutex_lock(oceanObjectMutex); 00122 itsMass = mass; 00123 pthread_mutex_unlock(oceanObjectMutex); 00124 } 00125 00126 // ###################################################################### 00127 void OceanObject::setId(uint id) 00128 { 00129 pthread_mutex_lock(oceanObjectMutex); 00130 itsId = id; 00131 pthread_mutex_unlock(oceanObjectMutex); 00132 } 00133 00134 // ###################################################################### 00135 Point3D OceanObject::getPosition() 00136 { 00137 pthread_mutex_lock(oceanObjectMutex); 00138 Point3D p = itsPosition; 00139 pthread_mutex_unlock(oceanObjectMutex); 00140 return p; 00141 } 00142 00143 // ###################################################################### 00144 rutz::shared_ptr<Point3D> OceanObject::getPositionPtr() 00145 { 00146 pthread_mutex_lock(oceanObjectMutex); 00147 rutz::shared_ptr<Point3D> p (new Point3D(itsPosition)); 00148 pthread_mutex_unlock(oceanObjectMutex); 00149 return p; 00150 } 00151 00152 // ###################################################################### 00153 Angle OceanObject::getOrientation() 00154 { 00155 pthread_mutex_lock(oceanObjectMutex); 00156 Angle o = itsOrientation; 00157 pthread_mutex_unlock(oceanObjectMutex); 00158 return o; 00159 } 00160 00161 // ###################################################################### 00162 rutz::shared_ptr<Angle> OceanObject::getOrientationPtr() 00163 { 00164 pthread_mutex_lock(oceanObjectMutex); 00165 rutz::shared_ptr<Angle> o (new Angle(itsOrientation)); 00166 pthread_mutex_unlock(oceanObjectMutex); 00167 return o; 00168 } 00169 00170 00171 // ###################################################################### 00172 float OceanObject::getFrequency() 00173 { 00174 pthread_mutex_lock(oceanObjectMutex); 00175 float f = itsFrequency; 00176 pthread_mutex_unlock(oceanObjectMutex); 00177 return f; 00178 } 00179 00180 // ###################################################################### 00181 float OceanObject::getDistance() 00182 { 00183 pthread_mutex_lock(oceanObjectMutex); 00184 float d = itsDistance; 00185 pthread_mutex_unlock(oceanObjectMutex); 00186 return d; 00187 } 00188 00189 // ###################################################################### 00190 float OceanObject::getMass() 00191 { 00192 pthread_mutex_lock(oceanObjectMutex); 00193 float m = itsMass; 00194 pthread_mutex_unlock(oceanObjectMutex); 00195 return m; 00196 } 00197 00198 // ###################################################################### 00199 uint OceanObject::getId() 00200 { 00201 pthread_mutex_lock(oceanObjectMutex); 00202 uint id = itsId; 00203 pthread_mutex_unlock(oceanObjectMutex); 00204 return id; 00205 } 00206 00207 // ###################################################################### 00208 OceanObject::OceanObjectStatus OceanObject::getStatus() 00209 { 00210 pthread_mutex_lock(oceanObjectMutex); 00211 OceanObjectStatus currentStatus = itsStatus; 00212 pthread_mutex_unlock(oceanObjectMutex); 00213 return currentStatus; 00214 } 00215 00216 // ###################################################################### 00217 OceanObject::OceanObjectType OceanObject::getType() 00218 { 00219 pthread_mutex_lock(oceanObjectMutex); 00220 OceanObjectType currentType = itsType; 00221 pthread_mutex_unlock(oceanObjectMutex); 00222 return currentType; 00223 } 00224 00225 // ###################################################################### 00226 /* So things look consistent in everyone's emacs... */ 00227 /* Local Variables: */ 00228 /* indent-tabs-mode: nil */ 00229 /* End: */