PVector(ピクセル空間ベクトル)
MVector(メーター空間ベクトル)
RVector(レンダリング空間ベクトル) の3つのタイプにさらに派生するGVectorクラスを作成しています。
class GVector {
public :
eVectorSpace eVS; // Defines which space the vector would be
float x,y; // The x and y values of a 2-Dimensional vector
...
GVector operator+ (const GVector& v) const { return GVector(x+v.x, y+v.y, v.eVS); }
...
};
class MVector {
public :
PVector toPVector() {...}
//Will contain functions to convert the same vector into a different space
};
同じ空間にある2つのベクトルを追加できるようにしたい
MVector operator+ (const MVector& v) const { return MVector(x+v.x, y+v.y); }
基本クラスをこのように機能させる必要がありますか?
virtual GVector* operator+ (const GVector* v) const () = 0;
しかし、2つの加算ベクトルと同じ空間にあるベクトルを返したいと思います。
x、yの値を加算する関数は、各タイプのベクトルで同じです。これを基本クラス自体に最小化する方法はありますか?または、同じ空間にベクトルを追加し、それらを異なる空間に変換するためのより良いアプローチはありますか?