vector2,3,4類在directx中都有現成的可以呼叫,不過要實現其中的功能其實也不難,也都是一些簡單的數學知識罷了。
1 + - * /算術運算
2 向量的數量積,又叫:點乘
3 向量的向量積,又叫:叉乘
4 向量單位化(normalization)
#pragma once
extern const double uzero;
class vector3
vector3(float x1, float y1, float z1):x(x1), y(y1), z(z1){}
vector3(const vector3 &v);
~vector3();
void operator=(const vector3 &v);
vector3 operator+(const vector3 &v);
vector3 operator-(const vector3 &v);
vector3 operator/(const vector3 &v);
vector3 operator*(const vector3 &v);
vector3 operator+(float f);
vector3 operator-(float f);
vector3 operator/(float f);
vector3 operator*(float f);
float dot(const vector3 &v);
float length();
void normalize();
vector3 crossproduct(const vector3 &v);
void printvec3();
};
#include"plane.h"
#includeconst double uzero = 1e-6;
//複製建構函式,必須為常量引用引數,否則編譯不通過
vector3::vector3(const vector3 &v):x(v.x), y(v.y), z(v.z)
vector3::~vector3()
void vector3::operator=(const vector3 &v)
vector3 vector3::operator+(const vector3 &v)
vector3 vector3::operator-(const vector3 &v)
vector3 vector3::operator/(const vector3 &v)
return vector3(x/v.x, y/v.y, z/v.z);
}vector3 vector3::operator*(const vector3 &v)
vector3 vector3::operator+(float f)
vector3 vector3::operator-(float f)
vector3 vector3::operator/(float f)
return vector3(x/f, y/f, z/f);
}vector3 vector3::operator*(float f)
float vector3::dot(const vector3 &v)
float vector3::length()
void vector3::normalize()
/*cross product叉乘公式
axb = | i, j, k |
| a.x a.y a.z|
| b.x b.y b.z| = (a.x*b.z -a.z*b.y)i + (a.z*b.x - a.x*b.z)j + (a.x+b.y - a.y*b.x)k
*/vector3 vector3::crossproduct(const vector3 &v)
void vector3::printvec3()
運算結果:
實現乙個STL的vector容器
封裝了vector的資料結構,和push back capacity size 方法,內嵌了iterator迭代器類 include include using namespace std namespace ministl vector 拷貝建構函式 賦值運算子過載函式 void push bac...
用vector實現乙個變長陣列
所謂陣列,有這樣的性質 c語言中的陣列,一旦長度定義,就不能改變。有時候需要動態增加陣列長度,而且想保留上述性質,這時候就可以用vector。vector模擬了c語言中陣列的操作,比如取值,下標越界未定義等。最重要的,它支援size 和resize 方法,可以獲得陣列長度,以及擴充套件陣列長度。這樣...
C語言實現乙個泛型的vector
使用純 c 語言實現乙個泛型的 vector 支援拷貝構造和移動構造。vector 是動態的陣列,因此我們儲存 vector 申請的記憶體塊的指標,此外我們需要兩個 size t 型別的數儲存當前開闢的空間和當前已經存有的元素個數。故需要乙個我們定義以下的 vector 結構體 struct vec...