Revision: 6970
          http://playerstage.svn.sourceforge.net/playerstage/?rev=6970&view=rev
Author:   natepak
Date:     2008-08-20 23:19:02 +0000 (Wed, 20 Aug 2008)

Log Message:
-----------
Added Angle, Param, Vector4 classes

Modified Paths:
--------------
    code/gazebo/trunk/worlds/bandit.world
    code/gazebo/trunk/worlds/models/bandit.model

Added Paths:
-----------
    code/gazebo/trunk/server/Angle.cc
    code/gazebo/trunk/server/Angle.hh
    code/gazebo/trunk/server/Param.hh
    code/gazebo/trunk/server/Vector4.cc
    code/gazebo/trunk/server/Vector4.hh

Added: code/gazebo/trunk/server/Angle.cc
===================================================================
--- code/gazebo/trunk/server/Angle.cc                           (rev 0)
+++ code/gazebo/trunk/server/Angle.cc   2008-08-20 23:19:02 UTC (rev 6970)
@@ -0,0 +1,194 @@
+/*
+ *  Gazebo - Outdoor Multi-Robot Simulator
+ *  Copyright (C) 2003  
+ *     Nate Koenig & Andrew Howard
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+/* Desc: Angle class
+ * Author: Nate Koenig
+ * Date: 18 Aug 2008
+ * SVN: $Id:$
+ */
+
+#include <math.h>
+#include "Angle.hh"
+
+using namespace gazebo;
+
+////////////////////////////////////////////////////////////////////////////////
+/// Constructor
+Angle::Angle()
+{
+  this->value = 0;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Constructor
+Angle::Angle(double radian)
+{
+  this->value = radian;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Copy constructor
+Angle::Angle(const Angle &angle)
+{
+  this->value = angle.value;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Destructor
+Angle::~Angle()
+{
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Set the value from an angle in radians
+void Angle::SetFromRadian( double radian )
+{
+  this->value = radian;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Set the value from an angle in degrees
+void Angle::SetFromDegree( double degree )
+{
+  this->value = degree * M_PI / 180.0;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Get the angle in radians
+double Angle::GetAsRadian() const
+{
+  return this->value;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Get the angle in degrees
+double Angle::GetAsDegree() const
+{
+  return this->value * 180.0 / M_PI;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Normalize the angle
+void Angle::Normalize()
+{
+ this->value = atan2(sin(this->value), cos(this->value));
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Substraction
+Angle Angle::operator-(const Angle &angle) const
+{
+  return Angle(this->value - angle.value);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Addition
+Angle Angle::operator+(const Angle &angle) const
+{
+  return Angle(this->value + angle.value);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Multiplication
+Angle Angle::operator*(const Angle &angle) const
+{
+  return Angle(this->value * angle.value);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Division
+Angle Angle::operator/(const Angle &angle) const
+{
+  return Angle(this->value / angle.value);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Add set
+Angle Angle::operator-=(const Angle &angle)
+{
+  this->value -= angle.value;
+  return *this;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Sub set
+Angle Angle::operator+=(const Angle &angle)
+{
+  this->value += angle.value;
+  return *this;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Mul set
+Angle Angle::operator*=(const Angle &angle)
+{
+  this->value *= angle.value;
+  return *this;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Div set
+Angle Angle::operator/=(const Angle &angle)
+{
+  this->value /= angle.value;
+  return *this;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Equality
+bool Angle::operator==(const Angle &angle) const
+{
+  return this->value == angle.value;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Inequality
+bool Angle::operator!=(const Angle &angle) const
+{
+  return !(*this == angle);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Less
+bool Angle::operator<(const Angle &angle) const
+{
+  return this->value < angle.value;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Less equal
+bool Angle::operator<=(const Angle &angle) const
+{
+  return this->value <= angle.value;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Greater
+bool Angle::operator>(const Angle &angle) const
+{
+  return this->value > angle.value;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Greater equal
+bool Angle::operator>=(const Angle &angle) const
+{
+  return this->value >= angle.value;
+}

Added: code/gazebo/trunk/server/Angle.hh
===================================================================
--- code/gazebo/trunk/server/Angle.hh                           (rev 0)
+++ code/gazebo/trunk/server/Angle.hh   2008-08-20 23:19:02 UTC (rev 6970)
@@ -0,0 +1,136 @@
+/*
+ *  Gazebo - Outdoor Multi-Robot Simulator
+ *  Copyright (C) 2003  
+ *     Nate Koenig & Andrew Howard
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+/* Desc: Angle class
+ * Author: Nate Koenig
+ * Date: 18 Aug 2008
+ * SVN: $Id:$
+ */
+
+#ifndef ANGLE_HH
+#define ANGLE_HH
+
+#include <iostream>
+
+namespace gazebo
+{
+
+/// \addtogroup gazebo_server
+/// \brief Angle class
+/// \{
+
+/// \brief Angle class
+  class Angle
+  {
+    /// \brief Constructor
+    public: Angle();
+
+    /// \brief Constructor
+    public: Angle(double radian);
+
+    /// \brief Copy constructor
+    public: Angle(const Angle &angle);
+  
+    /// \brief Destructor
+    public: virtual ~Angle();
+  
+    /// \brief Set the value from an angle in radians
+    public: void SetFromRadian( double radian );
+  
+    /// \brief Set the value from an angle in degrees
+    public: void SetFromDegree( double degree );
+  
+    /// \brief Get the angle in radians
+    public: double GetAsRadian() const;
+  
+    /// \brief Get the angle in degrees
+    public: double GetAsDegree() const;
+
+    /// \brief Normalize the angle
+    public: void Normalize();
+
+    /// \brief Dereference operator
+    public: inline double operator*() { return value; }
+
+    /// \brief Substraction
+    public: Angle operator-(const Angle &angle) const;
+    /// \brief Addition
+    public: Angle operator+(const Angle &angle) const;
+    /// \brief Multiplication
+    public: Angle operator*(const Angle &angle) const;
+    /// \brief Division
+    public: Angle operator/(const Angle &angle) const;
+
+    /// \brief Add set
+    public: Angle operator-=(const Angle &angle);
+    /// \brief Sub set
+    public: Angle operator+=(const Angle &angle);
+    /// \brief Mul set
+    public: Angle operator*=(const Angle &angle);
+    /// \brief Div set
+    public: Angle operator/=(const Angle &angle);
+
+    /// \brief Equality
+    public: bool operator==(const Angle &angle) const;
+
+    /// \brief Inequality
+    public: bool operator!=(const Angle &angle) const;
+
+    /// \brief Less
+    public: bool operator<(const Angle &angle) const;
+    /// \brief Less equal
+    public: bool operator<=(const Angle &angle) const;
+
+    /// \brief Greater
+    public: bool operator>(const Angle &angle) const;
+    /// \brief Greater equal
+    public: bool operator>=(const Angle &angle) const;
+
+    /// \brief Ostream operator. Outputs in degrees
+    /// \param out Ostream
+    /// \param pt Angle to output
+    /// \return The Ostream
+    public: friend std::ostream &operator<<( std::ostream &out, const 
gazebo::Angle &a )
+    {
+      out << a.GetAsDegree();
+      return out;
+    }
+  
+    /// \brief Istream operator. Assumes input is in degrees
+    /// \param in Ostream
+    /// \param pt Angle to read value into
+    /// \return The istream
+    public: friend std::istream &operator>>( std::istream &in, gazebo::Angle 
&a )
+    {
+      // Skip white spaces
+      in.setf( std::ios_base::skipws );
+      in >> a.value;
+      a.value = a.value * M_PI / 180.0; 
+      return in;
+    }
+  
+    /// The angle in radians
+    private: double value;
+  };
+  
+/// \}
+}
+
+#endif

Added: code/gazebo/trunk/server/Param.hh
===================================================================
--- code/gazebo/trunk/server/Param.hh                           (rev 0)
+++ code/gazebo/trunk/server/Param.hh   2008-08-20 23:19:02 UTC (rev 6970)
@@ -0,0 +1,136 @@
+/*
+ *  Gazebo - Outdoor Multi-Robot Simulator
+ *  Copyright (C) 2003  
+ *     Nate Koenig & Andrew Howard
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+/* Desc: A parameter
+ * Author: Nate Koenig
+ * Date: 14 Aug 2008
+ * SVN: $Id:$
+ */
+
+#ifndef PARAM_HH
+#define PARAM_HH
+
+#include <iostream>
+#include <boost/lexical_cast.hpp>
+#include <string>
+
+#include "XMLConfig.hh"
+
+namespace gazebo
+{
+  template< typename T >
+  class Param
+  {
+    /// \brief Constructor
+    public: Param(std::string key, T defValue, int required);
+  
+    /// \brief Destructor
+    public: virtual ~Param();
+  
+    /// \brief Load the param from an XML config file
+    public: void Load(XMLConfigNode *node);
+
+    /// \brief Get the value
+    public: T GetValue() const;
+
+    /// \brief Set the value of the parameter
+    public: void SetValue(const T &value);
+
+    public: inline T operator*() const {return value;}
+
+    public: friend std::ostream &operator<<( std::ostream &out, const Param<T> 
&p)
+            {
+              out << "<" << p.key << ">" << p.value << "</" << p.key << ">";
+
+              return out;
+            }
+  
+    private: T value;
+  
+    private: std::string key;
+    private: T defaultValue;
+    private: int required;
+  
+  };
+ 
+
+  
//////////////////////////////////////////////////////////////////////////////
+  // Constructor
+  template< typename T>
+  Param<T>::Param(std::string key, T defValue, int required)
+  {
+    this->key = key;
+    this->defaultValue = defValue;
+    this->required = required;
+    this->value = this->defaultValue;
+  }
+  
+  
//////////////////////////////////////////////////////////////////////////////
+  // Destructor
+  template<typename T>
+  Param<T>::~Param()
+  {
+  }
+ 
+  
//////////////////////////////////////////////////////////////////////////////
+  /// Load the param from an XML config file
+  template<typename T>
+  void Param<T>::Load(XMLConfigNode *node)
+  {
+    std::ostringstream stream;
+    stream << this->defaultValue;
+
+    std::string input = node->GetString(this->key, stream.str(), 
+                                        this->required);
+
+    // "true" and "false" doesn't work properly
+    if (input == "true")
+      input = "1";
+    else if (input == "false")
+      input = "0";
+
+    try
+    {
+      this->value = boost::lexical_cast<T>(input);
+    }
+    catch (boost::bad_lexical_cast &e)
+    {
+      std::cerr << "Unable to read value with key[" << this->key << "]\n";
+    }
+  }
+
+  
//////////////////////////////////////////////////////////////////////////////
+  ///Get the value
+  template<typename T>
+  T Param<T>::GetValue() const
+  {
+    return this->value;
+  }
+
+  
//////////////////////////////////////////////////////////////////////////////
+  /// Set the value of the parameter
+  template<typename T>
+  void Param<T>::SetValue(const T &v)
+  {
+    this->value = v;
+  }
+
+}
+#endif

Added: code/gazebo/trunk/server/Vector4.cc
===================================================================
--- code/gazebo/trunk/server/Vector4.cc                         (rev 0)
+++ code/gazebo/trunk/server/Vector4.cc 2008-08-20 23:19:02 UTC (rev 6970)
@@ -0,0 +1,273 @@
+/*
+ *  Gazebo - Outdoor Multi-Robot Simulator
+ *  Copyright (C) 2003
+ *     Nate Koenig & Andrew Howard
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+/* Desc: Vector 4
+ * Author: Andrew Howard and Nate Koenig
+ * Date: 4 Apr 2007
+ * SVN: $Id:$
+ */
+
+#include <math.h>
+
+#include "Vector4.hh"
+
+using namespace gazebo;
+
+////////////////////////////////////////////////////////////////////////////////
+// Constructor
+Vector4::Vector4()
+    : x(0), y(0), z(0), w(0)
+{
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Constructor
+Vector4::Vector4( const double &x, const double &y, const double &z,const 
double &w )
+    : x(x), y(y), z(z), w(w)
+{
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Copy Constructor
+Vector4::Vector4( const Vector4 &pt )
+    : x(pt.x), y(pt.y), z(pt.z), w(pt.w)
+{
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Destructor
+Vector4::~Vector4()
+{
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Calc distance to the given point
+double Vector4::Distance(const Vector4 &pt ) const
+{
+  return sqrt((this->x-pt.x)*(this->x-pt.x) + 
+              (this->y-pt.y)*(this->y-pt.y) + 
+              (this->z-pt.z)*(this->z-pt.z) +
+              (this->w-pt.w)*(this->w-pt.w));
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Returns the length (magnitude) of the vector
+double Vector4::GetLength() const
+{
+  return sqrt(this->x * this->x + this->y * this->y + this->z * this->z + 
this->w * this->w);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Return the square of the length (magnitude) of the vector
+double Vector4::GetSquaredLength() const
+{
+  return this->x * this->x + this->y * this->y + this->z * this->z + this->w * 
this->w;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Normalize the vector length
+void Vector4::Normalize()
+{
+  double d = this->GetLength();
+
+  this->x /= d;
+  this->y /= d;
+  this->z /= d;
+  this->w /= d;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Set the contents of the vector
+void Vector4::Set(double x, double y, double z, double w)
+{
+  this->x = x;
+  this->y = y;
+  this->z = z;
+  this->w = w;
+}
+
+
+////////////////////////////////////////////////////////////////////////////////
+// Equals operator
+const Vector4 &Vector4::operator=( const Vector4 &pt )
+{
+  this->x = pt.x;
+  this->y = pt.y;
+  this->z = pt.z;
+  this->w = pt.w;
+
+  return *this;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Equal operator
+const Vector4 &Vector4::operator=( double value )
+{
+  this->x = value;
+  this->y = value;
+  this->z = value;
+  this->w = value;
+
+  return *this;
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+// Addition operator
+Vector4 Vector4::operator+( const Vector4 &pt ) const
+{
+  return Vector4(this->x + pt.x, this->y + pt.y, this->z + pt.z, this->w+pt.w);
+}
+
+const Vector4 &Vector4::operator+=( const Vector4 &pt )
+{
+  this->x += pt.x;
+  this->y += pt.y;
+  this->z += pt.z;
+  this->w += pt.w;
+
+  return *this;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Subtraction operators
+Vector4 Vector4::operator-( const Vector4 &pt ) const
+{
+  return Vector4(this->x - pt.x, this->y - pt.y, this->z - pt.z, this->w-pt.w);
+}
+
+const Vector4 &Vector4::operator-=( const Vector4 &pt )
+{
+  this->x -= pt.x;
+  this->y -= pt.y;
+  this->z -= pt.z;
+  this->w -= pt.w;
+
+  return *this;
+}
+
+
+////////////////////////////////////////////////////////////////////////////////
+// Division operators
+
+const Vector4 Vector4::operator/( const Vector4 &pt ) const
+{
+  return Vector4(this->x / pt.x, this->y / pt.y, this->z / pt.z, this->w/pt.w);
+}
+
+const Vector4 &Vector4::operator/=( const Vector4 &pt )
+{
+  this->x /= pt.x;
+  this->y /= pt.y;
+  this->z /= pt.z;
+  this->w /= pt.w;
+
+  return *this;
+}
+
+const Vector4 Vector4::operator/( double v ) const
+{
+  return Vector4(this->x / v, this->y / v, this->z / v, this->w / v);
+}
+
+const Vector4 &Vector4::operator/=( double v )
+{
+  this->x /= v;
+  this->y /= v;
+  this->z /= v;
+  this->w /= v;
+
+  return *this;
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+// Mulitplication operators
+const Vector4 Vector4::operator*( const Vector4 &pt ) const
+{
+  return Vector4(this->x * pt.x, this->y * pt.y, this->z * pt.z, this->w*pt.w);
+}
+
+const Vector4 &Vector4::operator*=( const Vector4 &pt )
+{
+  this->x *= pt.x;
+  this->y *= pt.y;
+  this->z *= pt.z;
+  this->w *= pt.w;
+
+  return *this;
+}
+
+const Vector4 Vector4::operator*( double v ) const
+{
+  return Vector4(this->x * v, this->y * v, this->z * v, this->w*v);
+}
+
+const Vector4 &Vector4::operator*=( double v)
+{
+  this->x *= v;
+  this->y *= v;
+  this->z *= v;
+  this->w *= v;
+
+  return *this;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Equality operator
+bool Vector4::operator==( const Vector4 &pt ) const
+{
+  return this->x == pt.x && this->y == pt.y && this->z == pt.z && 
this->w==pt.w;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Inequality operator
+bool Vector4::operator!=( const Vector4 &pt ) const
+{
+  return !(*this == pt);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// See if a point is finite (e.g., not nan)
+bool Vector4::IsFinite() const
+{
+  return finite(this->x) && finite(this->y) && finite(this->z) && 
finite(this->w);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// [] operator
+double Vector4::operator[](unsigned int index) const
+{
+  switch (index)
+  {
+    case 0:
+      return this->x;
+    case 1:
+      return this->y;
+    case 2:
+      return this->z;
+    case 3:
+      return this->w;
+    default:
+      return 0;
+  }
+}

Added: code/gazebo/trunk/server/Vector4.hh
===================================================================
--- code/gazebo/trunk/server/Vector4.hh                         (rev 0)
+++ code/gazebo/trunk/server/Vector4.hh 2008-08-20 23:19:02 UTC (rev 6970)
@@ -0,0 +1,163 @@
+/*
+ *  Gazebo - Outdoor Multi-Robot Simulator
+ *  Copyright (C) 2003  
+ *     Nate Koenig & Andrew Howard
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+/* Desc: 4 tuple
+ * Author: Nate Koenig
+ * Date: 19 Aug 2008
+ * SVN: $Id:$
+ */
+
+#ifndef VECTOR4_HH
+#define VECTOR4_HH
+
+#include <iostream>
+#include <fstream>
+
+namespace gazebo
+{
+/// \addtogroup gazebo_server
+/// \brief Generic x,y,z,w vector 
+/// \{
+
+/// \brief Generic x,y,z,w vector 
+class Vector4
+{
+  /// \brief Constructor
+  public: Vector4();
+
+  /// \brief Constructor
+  public: Vector4( const double &x, const double &y, const double &z, const 
double &w );
+
+  /// \brief Constructor
+  public: Vector4( const Vector4 &pt );
+
+  /// \brief Destructor
+  public: virtual ~Vector4();
+
+  /// \brief Calc distance to the given point
+  public: double Distance( const Vector4 &pt ) const;
+
+  /// \brief Returns the length (magnitude) of the vector
+  public: double GetLength() const;
+
+  /// \brief Return the square of the length (magnitude) of the vector
+  public: double GetSquaredLength() const;
+
+  /// \brief Normalize the vector length
+  public: void Normalize();
+
+  /// \brief Set the contents of the vector
+  public: void Set(double x = 0, double y =0 , double z = 0, double w=0);
+
+  /// \brief Equal operator
+  public: const Vector4 &operator=( const Vector4 &pt );
+
+  /// \brief Equal operator
+  public: const Vector4 &operator=( double value );
+
+  /// \brief Addition operator
+  public: Vector4 operator+( const Vector4 &pt ) const;
+
+  /// \brief Addition operator
+  public: const Vector4 &operator+=( const Vector4 &pt );
+
+  /// \brief Subtraction operators 
+  public: Vector4 operator-( const Vector4 &pt ) const;
+
+  /// \brief Subtraction operators 
+  public: const Vector4 &operator-=( const Vector4 &pt );
+
+  /// \brief Division operators
+  public: const Vector4 operator/( const Vector4 &pt ) const;
+
+  /// \brief Division operators
+  public: const Vector4 &operator/=( const Vector4 &pt );
+
+  /// \brief Division operators
+  public: const Vector4 operator/( double v ) const;
+
+  /// \brief Division operators
+  public: const Vector4 &operator/=( double v );
+
+  /// \brief Multiplication operators
+  public: const Vector4 operator*( const Vector4 &pt ) const;
+
+  /// \brief Multiplication operators
+  public: const Vector4 &operator*=( const Vector4 &pt );
+
+  /// \brief Multiplication operators
+  public: const Vector4 operator*( double v ) const;
+
+  /// \brief Multiplication operators
+  public: const Vector4 &operator*=( double v );
+
+  /// \brief Equality operators
+  public: bool operator==( const Vector4 &pt ) const;
+
+  /// \brief Equality operators
+  public: bool operator!=( const Vector4 &pt ) const;
+
+  /// \brief See if a point is finite (e.g., not nan)
+  public: bool IsFinite() const;
+
+  /// \brief [] operator
+  public: double operator[](unsigned int index) const;
+
+  /// X value
+  public: double x;
+
+  /// Y value
+  public: double y;
+
+  /// Z value
+  public: double z;
+
+  /// W value
+  public: double w;
+
+  /// \brief Ostream operator
+  /// \param out Ostream
+  /// \param pt Vector4 to output
+  /// \return The Ostream
+  public: friend std::ostream &operator<<( std::ostream &out, const 
gazebo::Vector4 &pt )
+  {
+    out << pt.x << " " << pt.y << " " << pt.z << " " << pt.w;
+
+    return out;
+  }
+
+  /// \brief Istream operator
+  /// \param in Ostream
+  /// \param pt Vector4 to read values into
+  /// \return The istream
+  public: friend std::istream &operator>>( std::istream &in, gazebo::Vector4 
&pt )
+  {
+    // Skip white spaces
+    in.setf( std::ios_base::skipws );
+    in >> pt.x >> pt.y >> pt.z >> pt.w;
+    return in;
+  }
+
+};
+
+/// \}
+}
+
+#endif

Modified: code/gazebo/trunk/worlds/bandit.world
===================================================================
--- code/gazebo/trunk/worlds/bandit.world       2008-08-20 22:36:51 UTC (rev 
6969)
+++ code/gazebo/trunk/worlds/bandit.world       2008-08-20 23:19:02 UTC (rev 
6970)
@@ -16,7 +16,7 @@
   <verbosity>5</verbosity>
 
   <physics:ode>
-    <stepTime>0.03</stepTime>
+    <stepTime>0.3</stepTime>
     <gravity>0 0 -9.8</gravity>
     <cfm>10e-5</cfm>
     <erp>0.3</erp>

Modified: code/gazebo/trunk/worlds/models/bandit.model
===================================================================
--- code/gazebo/trunk/worlds/models/bandit.model        2008-08-20 22:36:51 UTC 
(rev 6969)
+++ code/gazebo/trunk/worlds/models/bandit.model        2008-08-20 23:19:02 UTC 
(rev 6970)
@@ -100,7 +100,6 @@
     <lowStop>-15</lowStop>
     <highStop>15</highStop>
     <erp>0.1</erp>
-    <cfm>10e-5</cfm>
   </joint:hinge>
 
   <body:box name="torso_body">
@@ -127,7 +126,6 @@
     <lowStop>-90</lowStop>
     <highStop>90</highStop>
     <erp>0.1</erp>
-    <cfm>10e-5</cfm>
   </joint:hinge>
 
   <body:box name="right_shoulder_mounting_body">


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Playerstage-commit mailing list
Playerstage-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/playerstage-commit

Reply via email to