ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-2.0/src/math/Vector3.hpp
(Generate patch)

Comparing trunk/OOPSE-2.0/src/math/Vector3.hpp (file contents):
Revision 1563 by tim, Wed Oct 13 06:51:09 2004 UTC vs.
Revision 1630 by tim, Thu Oct 21 21:31:39 2004 UTC

# Line 39 | Line 39 | namespace oopse {
39   #include "Vector.hpp"
40  
41   namespace oopse {
42 <
42 >  
43 >  /**
44 >   * @class Vector3 Vector3.hpp "math/Vector3.hpp"
45 >   * @brief
46 >   */
47 >  
48 >  template<typename Real>
49 >  class Vector3 : public Vector<Real, 3>{
50 >  public:
51 >    typedef Real ElemType;
52 >    typedef Real* ElemPoinerType;
53 >    
54 >    Vector3() : Vector<Real, 3>(){}
55 >    
56 >    /** Constructs and initializes a Vector3 from x, y, z coordinates */
57 >    inline Vector3( double x, double y, double z) {
58 >      data_[0] = x;
59 >      data_[1] = y;
60 >      data_[2] = z;
61 >    }
62 >    
63 >    inline Vector3(const Vector<Real, 3>& v) : Vector<Real, 3>(v) {}
64 >    
65 >    inline Vector3<Real>& operator = (const Vector<Real, 3>& v) {
66 >      if (this == &v) { return *this; }
67 >      Vector<Real, 3>::operator=(v);
68 >      return *this;
69 >    }
70 >    
71      /**
72 <     * @class Vector3 Vector3.hpp "math/Vector3.hpp"
73 <     * @brief
72 >     * Retunrs reference of the first element of Vector3.
73 >     * @return reference of the first element of Vector3
74       */
75 +    inline Real& x() {  return data_[0];}
76      
48    template<typename Real>
49    class Vector3 : public Vector<Real, 3>{
50        public:
51
52            Vector3() : Vector<Real, 3>(){}
53
54            /** Constructs and initializes a Vector3 from x, y, z coordinates */            
55            inline Vector3( double x, double y, double z) {
56                data_[0] = x;
57                data_[1] = y;
58                data_[2] = z;
59            }
60
61            inline Vector3(const Vector<Real, 3>& v) : Vector<Real, 3>(v) {}
62            
63            inline Vector3<Real>& operator = (const Vector<Real, 3>& v) {
64                if (this == &v) { return *this; }
65                Vector<Real, 3>::operator=(v);
66                return *this;
67            }
68
69            /**
70             * Retunrs reference of the first element of Vector3.
71             * @return reference of the first element of Vector3
72             */
73            inline double& x() {  return data_[0];}
74
75            /**
76             * Retunrs the first element of Vector3.
77             * @return  the first element of Vector3
78             */
79            inline double x() const {  return data_[0];}
80
81            /**
82             * Retunrs reference of the second element of Vector3.
83             * @return reference of the second element of Vector3
84             */
85            inline double& y() {  return data_[1];}
86
87            /**
88             * Retunrs  the second element of Vector3.
89             * @return c the second element of Vector3
90             */
91            inline double y() const {  return data_[1];}
92
93            /**
94             * Retunrs reference of the third element of Vector3.
95             * @return reference of the third element of Vector3
96             */
97            inline double& z() {  return data_[2];}
98
99            /**
100             * Retunrs  the third element of Vector3.
101             * @return f the third element of Vector3
102             */
103            inline double z() const {  return data_[2];}
104
105    };
106
77      /**
78 <     * Returns the cross product of two Vectors
79 <     * @param v1 first vector
110 <     * @param v2 second vector
111 <     * @return the cross product  of v1 and v2
112 <     * @see #vector::dot
78 >     * Retunrs the first element of Vector3.
79 >     * @return  the first element of Vector3
80       */
81 <    template<typename Real>
82 <    Vector3<Real> cross( const Vector3<Real>& v1, const Vector3<Real>& v2 ) {
83 <        Vector3<Real> result;
84 <                
85 <                result.x() = v1.y() * v2.z() - v1.z() * v2.y();
86 <                result.y() = v1.z() * v2.x() - v1.x() * v2.z();
87 <                result.z() = v1.x() * v2.y() - v1.y() * v2.x();
88 <
89 <                return result;
90 <    }
91 <        
81 >    inline Real x() const {  return data_[0];}
82 >    
83 >    /**
84 >     * Retunrs reference of the second element of Vector3.
85 >     * @return reference of the second element of Vector3
86 >     */
87 >    inline Real& y() {  return data_[1];}
88 >    
89 >    /**
90 >     * Retunrs  the second element of Vector3.
91 >     * @return c the second element of Vector3
92 >     */
93 >    inline Real y() const {  return data_[1];}
94 >    
95 >    /**
96 >     * Retunrs reference of the third element of Vector3.
97 >     * @return reference of the third element of Vector3
98 >     */
99 >    inline Real& z() {  return data_[2];}
100 >    
101 >    /**
102 >     * Retunrs  the third element of Vector3.
103 >     * @return f the third element of Vector3
104 >     */
105 >    inline Real z() const {  return data_[2];}
106 >    
107 >  };
108 >  
109 >  /**
110 >   * Returns the cross product of two Vectors
111 >   * @param v1 first vector
112 >   * @param v2 second vector
113 >   * @return the cross product  of v1 and v2
114 >   * @see #vector::dot
115 >   */
116 >  template<typename Real>
117 >  Vector3<Real> cross( const Vector3<Real>& v1, const Vector3<Real>& v2 ) {
118 >    Vector3<Real> result;
119 >    
120 >    result.x() = v1.y() * v2.z() - v1.z() * v2.y();
121 >    result.y() = v1.z() * v2.x() - v1.x() * v2.z();
122 >    result.z() = v1.x() * v2.y() - v1.y() * v2.x();
123 >    
124 >    return result;
125 >  }
126 >    
127 >  typedef Vector3<double> Vector3d;    
128 >  
129   }
130  
127
131   #endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines