// 定義向量類
class vector
vector()
// 使用兩個頂點拉初始化乙個向量
vector(vertex o, vertex d)
// 獲取向量的角度
double angle()
vertex tovertex()
double radian()
double value_sin = y/length;
double value_cos = x/length;
double radian = acos(value_cos);
if (value_sin < 0)
return radian;
} vector( double x, double y )
vector(vector& other)
void set( double x, double y )
// 向量反向
void reverse()
// 逆時針旋轉90度
void xytoyx()
// 任意角度旋轉,逆時針為角度正方向
// 角度數值引數
void rotate2( double angle )
// 弧度數值引數
void rotate( double radian )
void toone()
else
}void tozero()
// 檢測兩個向量是否相等
bool equals(vector other)
vector operator+(vector other)
void scale( double scale )
void offset( double dx, double dy )
void offset_back( double dx, double dy )
double getlength()
// 計算在某個向量方向上的分量,結果可能是負值
double projection( vector direction )
// 計算兩個向量的夾角餘旋值
static double calanglecos( vector& one, vector& other )
// 計算兩個向量的叉積
static double calchaji( vector& first, vector& second )
// 計算兩個向量的夾角弧度數,取值範圍-pi~pi,對應餘旋值為1~-1
// 轉向順時針角度為正值,轉向逆時針,角度為負值。
static double calradian( vector& one, vector& other )
return radian;
} // 計算兩個向量的夾角度數,取值範圍-180~180,對應餘旋值為1~-1
// 轉向順時針角度為正值,轉向逆時針,角度為負值。
static double calangle( vector& one, vector& other )
return angle;
} void show()
};
向量模板類
templaterank vector insert t const e,rank r 注意 元素搬遷的順序不能顛倒,否則會因元素被覆蓋而造成資料丟失。向量結構的插入較之列表結構,複雜度就集中在元素搬遷上,線性正比於字尾的長度。考慮最壞情況,依次從首部插入,元素移動個數成幾何級數由n遞減至1。故總體...
自定義乙個vector向量類
c 標準模板庫stl給出了vector,list,deque,stack,set,map等模板類,平時我們直接使用居多,對於類內部怎麼實現不在意。現在以向量類vector為例,簡單自定義 其uml vetor 陣列名ele t 陣列目前大小size int 陣列容量cap int vector 用指...
c 的向量類
下例中定義了乙個向量類,並對向量定義了一系列操作 檔案結構 定義兩種模式,一種為直角座標,一種為極座標,狀態成員 private double x double y 直角座標系的橫縱座標 double distance double angle 極座標的角度及距離 mode mode void se...