![]() |
Unuk 1.0
|
00001 #ifndef _GEOMETRY_H_ 00002 #define _GEOMETRY_H_ 00003 #include <cmath> 00004 00005 struct TexCoord { 00006 float s, t; 00007 TexCoord(void): 00008 s(0.0f), 00009 t(0.0f) {} 00010 00011 TexCoord(float s, float t): 00012 s(s), 00013 t(t) {} 00014 }; 00015 00016 struct Colour { 00017 float r, g, b, a; 00018 Colour(float R, float G, float B, float A): 00019 r(R), 00020 g(G), 00021 b(B), 00022 a(A) {} 00023 00024 Colour(void): 00025 r(0.0f), 00026 g(0.0f), 00027 b(0.0f), 00028 a(0.0f) {} 00029 }; 00030 00031 struct Vector2 { 00032 float x, y; 00033 Vector2(float X, float Y): 00034 x(X), 00035 y(Y) {} 00036 00037 Vector2(void): 00038 x(0.0f), 00039 y(0.0f) {} 00040 00041 Vector2(const Vector2& v): 00042 x(v.x), 00043 y(v.y) {} 00044 00045 Vector2 operator*(const float s) const { 00046 return Vector2(x*s, y*s); 00047 } 00048 00049 Vector2& operator=(const Vector2& v) { 00050 if(this == &v) { 00051 return *this; 00052 } 00053 x = v.x; 00054 y = v.y; 00055 00056 return *this; 00057 } 00058 00059 Vector2& operator+=(const Vector2& v) { 00060 this->x += v.x; 00061 this->y += v.y; 00062 00063 return *this; 00064 } 00065 00066 const Vector2 operator-(const Vector2& v) const { 00067 Vector2 result; 00068 result.x = x - v.x; 00069 result.y = y - v.y; 00070 00071 return result; 00072 } 00073 00074 float length(void) const { 00075 return sqrtf(x*x+y*y); 00076 } 00077 00078 void normalize(void) { 00079 float l = 1.0f / length(); 00080 x *= l; 00081 y *= l; 00082 } 00083 }; 00084 00085 typedef Vector2 Vertex; 00086 00087 inline float degreesToRadians(const float degrees) { 00088 const float PIOver180 = 3.14159f / 180.0f; 00089 return degrees * PIOver180; 00090 } 00091 00092 #endif