/* 使い方 このhファイルと同名のcppファイルをソースコードと同じ場所に置いて#include"ps_vector.h"します。 int a のような使い方と同じように 二次元ならvec2 a 三次元ならvec3 aとおきます このベクトルはデフォルトで0ベクトルです。 初期化したければ宣言の時にvec2 a(x,y,z)などとします 途中で成分を代入したければa.set(x,y,z)とします 各成分を取得したい時はx=a.getx() y=a.gety() z=a.getz() 値は全てdouble型です ()を忘れないようにして下さい 各成分がベクトル型の配列を作りたい時はvec2 a[N]です。 初期化は最初にvec2 a1,a2,a3を定義しておいて vec2 a[3]={a1,a2,a3}などでしてもいいし、 vec2 a[3]と最初において a[0].set(x,y,z)という風にも後から初期化もできます。ベクトル同士の足し算はa1+a2,引き算はa1-a2でできます。a1+=a2にも対応しています。 (vec2)a1/(double)b は唯のスカラーでベクトルを割った割り算です。 a1*a2は内積でdouble型を返します。 a1 | a2は外積でvec2同士の演算ではdouble型、vec3同士の演算ではvec3型を返します。 */ class vec2{ public: vec2(); vec2(double x,double y); vec2 operator+(const vec2 &obj); vec2 operator+=(const vec2 &obj); vec2 operator-(const vec2 &obj); vec2 operator/(const double &obj); vec2 operator*(const double &obj); double operator*(const vec2 &obj); double operator|(const vec2 &obj);//外積 void set(double x,double y); double getx(void){return m_x;} double gety(void){return m_y;} private: double m_x; double m_y; }; class vec3{ public: vec3(); vec3(double x,double y,double z); vec3 operator+(const vec3 &obj); vec3 operator+=(const vec3 &obj); vec3 operator-(const vec3 &obj); vec3 operator/(const double &obj); double operator*(const vec3 &obj); vec3 operator|(const vec3 &obj);//外積 void set(double x,double y, double z); double getx(void){return m_x;} double gety(void){return m_y;} double getz(void){return m_z;} private: double m_x; double m_y; double m_z; }; vec2 operator*(double i, vec2 &obj); vec3 operator*(double i, vec3 &obj);