Main Page | Class List | Directories | File List | Class Members | File Members

vector2.h

Go to the documentation of this file.
00001 /*
00002  * Physically Based Simulation, SS 2005
00003  *
00004  * Markus Liechti (liechtim@student.ethz.ch)
00005  * Yoshimi Takano (yoshi@student.ethz.ch)
00006  * Stefan Wismer (swismer@student.ethz.ch)
00007  *
00008  * $Id: vector2.h,v 1.12 2005/06/26 18:40:26 ytakano Exp $
00009  */
00010 
00013 #ifndef _VECTOR2_H_
00014 #define _VECTOR2_H_
00015 
00016 #include <iostream>
00017 #include <cmath>
00018 
00019 using namespace std;
00020 
00021 struct vertex;
00022 
00024 typedef double component;
00025 
00029 struct vector2 {
00031         component x;
00032 
00034         component y;
00035 
00037         vector2() {}
00038 
00043         vector2(const component xp, const component yp) : x(xp), y(yp) {}
00044 
00046         void operator+=(const component c);
00047         
00049         void operator+=(const vector2 &u);
00050         
00052         void operator-=(const component c);
00053         
00055         void operator-=(const vector2 &u);
00056         
00058         void operator*=(const component c);
00059         
00061         void operator*=(const vector2 &u);
00062         
00064         void operator/=(const component c);
00065         
00067         void operator/=(const vector2 &u);
00068         
00070         operator vertex();
00071         
00073         void operator=(const vertex &v);
00074 };
00075 
00077 vector2 operator+(const vector2 &u, const vector2 &v);
00078 
00080 vector2 operator+(const vector2 &u, const component c);
00081 
00083 vector2 operator+(const component c, const vector2 &u);
00084 
00086 vector2 operator-(const vector2 &u, const vector2 &v);
00087 
00089 vector2 operator-(const vector2 &u, const component c);
00090 
00092 vector2 operator-(const component c, const vector2 &u);
00093 
00095 vector2 operator-(const vector2 &u);
00096 
00098 component operator*(const vector2 &u, const vector2 &v);
00099 
00101 vector2 operator*(const component c, const vector2 &u);
00102 
00104 vector2 operator*(const vector2 &u, const component c);
00105 
00107 vector2 operator/(const vector2 &u, const vector2 &v);
00108 
00110 vector2 operator/(const vector2 &u, const component c);
00111 
00113 vector2 operator/(const component c, const vector2 &u);
00114 
00116 component operator%(const vector2 &u, const vector2 &v);
00117 
00119 bool operator==(const vector2 &u, const vector2 &v);
00120 
00122 bool operator!=(const vector2 &u, const vector2 &v);
00123 
00125 component length(const vector2 &u);
00126 
00128 vector2 normalize(const vector2 &u);
00129 
00135 vector2 signSquare(vector2 &v);
00136 
00144 vector2 project(vector2 &u, vector2 &vStart, vector2 &vEnd);
00145 
00153 bool below(vector2 &u, vector2 &vStart, vector2 &vEnd);
00154 
00160 vector2 perpendicular(const vector2 &u);
00161 
00168 vector2 rotate(vector2 &u, component theta);
00169 
00176 component perturbate(component mu, component sigma);
00177 
00186 vector2 perturbate(vector2 &mu, component sigma);
00187 
00200 vector2 perturbate(vector2 &u, component sigma1, component theta, component sigma2);
00201 
00208 ostream &operator<<(ostream &os, const vector2 &u);
00209 
00210 #endif

Generated on Sun Jul 10 22:32:04 2005 for S12 by  doxygen 1.4.2