00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef __HOM_Vector2_h__
00017 #define __HOM_Vector2_h__
00018
00019 #include "HOM_API.h"
00020 #include "HOM_Defines.h"
00021 #include "HOM_Errors.h"
00022 #include "HOM_Module.h"
00023 #include <UT/UT_Vector2.h>
00024 #include <vector>
00025 #include <stdexcept>
00026
00027 SWIGOUT(%rename(Vector2) HOM_Vector2;)
00028
00029 class HOM_API HOM_Vector2
00030 {
00031 public:
00032 HOM_Vector2() throw(HOM_Error)
00033 : myVector2(0.0f, 0.0f)
00034 { HOM_CONSTRUCT_OBJECT(this) }
00035
00036 HOM_Vector2(float x, float y) throw(HOM_Error)
00037 : myVector2(x, y)
00038 { HOM_CONSTRUCT_OBJECT(this) }
00039
00040 SWIGOUT(%ignore HOM_Vector2(const UT_Vector2&);)
00041 HOM_Vector2(const UT_Vector2 &vector2) throw(HOM_Error)
00042 : myVector2(vector2)
00043 { HOM_CONSTRUCT_OBJECT(this) }
00044
00045 HOM_Vector2(const std::vector<float> &sequence)
00046 throw(HOM_InvalidSize, HOM_Error)
00047 {
00048 HOM_CONSTRUCT_OBJECT(this)
00049 setTo(sequence);
00050 }
00051
00052 ~HOM_Vector2()
00053 { HOM_DESTRUCT_OBJECT(this) }
00054
00055 bool operator==(HOM_Vector2 &vector2)
00056 { return myVector2 == vector2.myVector2; }
00057
00058 bool operator!=(HOM_Vector2 &vector2)
00059 { return myVector2 != vector2.myVector2; }
00060
00061 bool isAlmostEqual(HOM_Vector2 &vector2, float tolerance=0.00001);
00062
00063
00064 bool almostEqual(HOM_Vector2 &vector2, float tolerance=0.00001)
00065 { return isAlmostEqual(vector2, tolerance); }
00066
00067 int __hash__();
00068 std::string __str__();
00069 std::string __repr__();
00070
00071 float __getitem__(int index) throw(std::out_of_range);
00072 void __setitem__(int index, float value) throw(std::out_of_range);
00073 int __len__()
00074 { return 2; }
00075
00076
00077
00078 SWIGOUT(%ignore operator[];)
00079 float &operator[](int index) throw(std::out_of_range);
00080
00081 void setTo(const std::vector<float> &sequence) throw(HOM_InvalidSize);
00082
00083 SWIGOUT(%ignore operator=;)
00084 HOM_Vector2 &operator=(const HOM_Vector2& vector2)
00085 {
00086 myVector2 = vector2.myVector2;
00087 return *this;
00088 }
00089
00090 HOM_Vector2 __add__(HOM_Vector2 &vector2)
00091 { return HOM_Vector2(myVector2 + vector2.myVector2); }
00092 HOM_Vector2 __sub__(HOM_Vector2 &vector2)
00093 { return HOM_Vector2(myVector2 - vector2.myVector2); }
00094 HOM_Vector2 __neg__()
00095 { return HOM_Vector2(-myVector2); }
00096 HOM_Vector2 __mul__(float scalar)
00097 { return HOM_Vector2(myVector2 * scalar); }
00098
00099 HOM_Vector2 normalized();
00100 float length()
00101 { return myVector2.length(); }
00102 float lengthSquared()
00103 { return myVector2.length2(); }
00104
00105 float distanceTo(HOM_Vector2 &vector2);
00106
00107 float dot(HOM_Vector2 &vector2)
00108 { return myVector2.dot(vector2.myVector2); }
00109
00110
00111 SWIGOUT(%ignore myVector2;)
00112 UT_Vector2 myVector2;
00113 };
00114
00115 #endif