00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
#ifndef FXVEC2F_H
00025
#define FXVEC2F_H
00026
00027
00028
namespace FX {
00029
00030
00031
00032 class FXAPI FXVec2f {
00033
public:
00034 FXfloat x;
00035 FXfloat y;
00036
public:
00037
00038
00039 FXVec2f(){}
00040
00041
00042 FXVec2f(
const FXVec2f& v){x=v.
x;y=v.
y;}
00043
00044
00045 FXVec2f(
const FXfloat v[]){x=v[0];y=v[1];}
00046
00047
00048 FXVec2f(FXfloat xx,FXfloat yy){x=xx;y=yy;}
00049
00050
00051 FXfloat& operator[](FXint i){
return (&x)[i];}
00052
00053
00054 const FXfloat& operator[](FXint i)
const {
return (&x)[i];}
00055
00056
00057 FXVec2f& operator=(
const FXVec2f& v){x=v.
x;y=v.
y;
return *
this;}
00058
00059
00060 FXVec2f& operator=(
const FXfloat v[]){x=v[0];y=v[1];
return *
this;}
00061
00062
00063 FXVec2f& operator*=(FXfloat n){x*=n;y*=n;
return *
this;}
00064 FXVec2f& operator/=(FXfloat n){x/=n;y/=n;
return *
this;}
00065 FXVec2f& operator+=(
const FXVec2f& v){x+=v.x;y+=v.y;
return *
this;}
00066 FXVec2f& operator-=(
const FXVec2f& v){x-=v.x;y-=v.y;
return *
this;}
00067
00068
00069 operator FXfloat*(){
return &x;}
00070 operator const FXfloat*()
const {
return &x;}
00071
00072
00073 friend FXAPI FXVec2f operator+(
const FXVec2f& v){
return v;}
00074
friend FXAPI FXVec2f operator-(
const FXVec2f& v){
return FXVec2f(-v.
x,-v.
y);}
00075
00076
00077 friend FXAPI FXVec2f operator+(
const FXVec2f& a,
const FXVec2f& b){
return FXVec2f(a.
x+b.
x,a.
y+b.
y);}
00078
00079
00080 friend FXAPI FXVec2f operator-(
const FXVec2f& a,
const FXVec2f& b){
return FXVec2f(a.
x-b.
x,a.
y-b.
y);}
00081
00082
00083 friend FXAPI FXVec2f operator*(
const FXVec2f& a,FXfloat n){
return FXVec2f(a.
x*n,a.
y*n);}
00084
friend FXAPI FXVec2f operator*(FXfloat n,
const FXVec2f& a){
return FXVec2f(n*a.
x,n*a.
y);}
00085
friend FXAPI FXVec2f operator/(
const FXVec2f& a,FXfloat n){
return FXVec2f(a.x/n,a.y/n);}
00086
friend FXAPI FXVec2f operator/(FXfloat n,
const FXVec2f& a){
return FXVec2f(n/a.x,n/a.y);}
00087
00088
00089 friend FXAPI FXfloat operator*(
const FXVec2f& a,
const FXVec2f& b){
return a.
x*b.
x+a.
y*b.
y;}
00090
00091
00092 friend FXAPI
int operator!(
const FXVec2f& a){
return a.
x==0.0f && a.
y==0.0f;}
00093
00094
00095 friend FXAPI
int operator==(
const FXVec2f& a,
const FXVec2f& b){
return a.
x==b.
x && a.
y==b.
y;}
00096
friend FXAPI
int operator!=(
const FXVec2f& a,
const FXVec2f& b){
return a.
x!=b.
x || a.
y!=b.
y;}
00097
00098
friend FXAPI
int operator==(
const FXVec2f& a,FXfloat n){
return a.x==n && a.y==n;}
00099
friend FXAPI
int operator!=(
const FXVec2f& a,FXfloat n){
return a.x!=n || a.y!=n;}
00100
00101
friend FXAPI
int operator==(FXfloat n,
const FXVec2f& a){
return n==a.x && n==a.y;}
00102
friend FXAPI
int operator!=(FXfloat n,
const FXVec2f& a){
return n!=a.x || n!=a.y;}
00103
00104
00105 friend FXAPI
int operator<(
const FXVec2f& a,
const FXVec2f& b){
return a.
x<b.
x && a.
y<b.
y;}
00106
friend FXAPI
int operator<=(
const FXVec2f& a,
const FXVec2f& b){
return a.
x<=b.
x && a.
y<=b.
y;}
00107
friend FXAPI
int operator>(
const FXVec2f& a,
const FXVec2f& b){
return a.x>b.x && a.y>b.y;}
00108
friend FXAPI
int operator>=(
const FXVec2f& a,
const FXVec2f& b){
return a.x>=b.x && a.y>=b.y;}
00109
00110
friend FXAPI
int operator<(
const FXVec2f& a,FXfloat n){
return a.x<n && a.y<n;}
00111
friend FXAPI
int operator<=(
const FXVec2f& a,FXfloat n){
return a.x<=n && a.y<=n;}
00112
friend FXAPI
int operator>(
const FXVec2f& a,FXfloat n){
return a.x>n && a.y>n;}
00113
friend FXAPI
int operator>=(
const FXVec2f& a,FXfloat n){
return a.x>=n && a.y>=n;}
00114
00115
friend FXAPI
int operator<(FXfloat n,
const FXVec2f& a){
return n<a.x && n<a.y;}
00116
friend FXAPI
int operator<=(FXfloat n,
const FXVec2f& a){
return n<=a.x && n<=a.y;}
00117
friend FXAPI
int operator>(FXfloat n,
const FXVec2f& a){
return n>a.x && n>a.y;}
00118
friend FXAPI
int operator>=(FXfloat n,
const FXVec2f& a){
return n>=a.x && n>=a.y;}
00119
00120
00121 friend FXAPI FXfloat len2(
const FXVec2f& a){
return a.
x*a.
x+a.
y*a.
y; }
00122
friend FXAPI FXfloat len(
const FXVec2f& a){
return sqrtf(len2(a)); }
00123
00124
00125
friend FXAPI FXVec2f normalize(
const FXVec2f& a);
00126
00127
00128 friend FXAPI FXVec2f lo(
const FXVec2f& a,
const FXVec2f& b){
return FXVec2f(FXMIN(a.
x,b.
x),FXMIN(a.
y,b.
y));}
00129
friend FXAPI FXVec2f hi(
const FXVec2f& a,
const FXVec2f& b){
return FXVec2f(FXMAX(a.
x,b.
x),FXMAX(a.
y,b.
y));}
00130
00131
00132
friend FXAPI FXStream& operator<<(FXStream& store,
const FXVec2f& v);
00133
00134
00135
friend FXAPI FXStream& operator>>(FXStream& store,FXVec2f& v);
00136 };
00137
00138 }
00139
00140
#endif