您的位置:首页 > 其它

实现一个三维矢量库,完成矢量之间的加减、点乘,叉乘

2017-04-05 16:23 387 查看
#include <stdio.h>
#include <iostream>
using namespace std;

class vector
{
public:
vector(float x = 0, float y = 0, float z = 0);
void input();
void show();
void jaf(vector &v1, vector &v2);
void jif(vector &v1, vector &v2);
void dji(vector &v1, vector &v2);
void cji(vector &v1, vector &v2);
private:
float x, y, z;
};
vector::vector(float x, float y, float z) :x(x), y(y), z(z)
{
}
void vector::input()
{
cin >> x >> y >> z;
}
void vector::show() {
cout << "(" << x << "," << y << "," << z << ")" << endl;
}
void vector::jaf(vector &v1, vector &v2)
{
this->x = v1.x + v2.x;
this->y = v1.y + v2.y;
this->z = v1.z + v2.z;
cout << "(" << x << "," << y << "," << z << ")" << endl;
}
void vector::jif(vector &v1, vector &v2)
{
x = v1.x - v2.x;
y = v1.y - v2.y;
z = v1.z - v2.z;
cout << "(" << x << "," << y << "," << z << ")" << endl;
}
void vector::dji(vector &v1, vector &v2)
{
x = v1.x*v2.x;
y = v1.y*v2.y;
z = v1.z*v2.z;
cout << x + y + z << endl;
}
void vector::cji(vector &v1, vector &v2)
{
x = v1.y*v2.z - v1.z*v2.y;
y = v1.z*v2.x - v1.x*v2.z;
z = v1.x*v2.y - v1.y*v2.x;
cout << "(" << x << "," << y << "," << z << ")" << endl;
}

int _tmain(int argc, _TCHAR* argv[])
{
vector d;
int n;
cout << endl << "矢量设计" << endl << endl;
m:
cout << "请创建空间矢量" << endl;
cout << "请输入空间矢量坐标(x1,y1,z1):" << endl; vector v1;
v1.input();
cout << "创建空间矢量a=";
v1.show();
cout << "请输入空间矢量坐标(x2,y2,z2):" << endl; vector v2;
v2.input();
cout << "创建空间矢量b=";
v2.show();
cout << endl << endl;
s:
cout << "请选择所要实现的功" << endl;
cout << "1.矢量的加法:" << endl;
cout << "2.矢量的减法:" << endl;
cout << "3.矢量的点积:" << endl;
cout << "4.矢量的叉积:" << endl;
cout << "5.退出并新建空间矢量:" << endl;
cout << "6.退出:" << endl;
cout << endl << endl;
cout << "请选择:";
cin >> n;
if (n < 1 || n>5)
{
cout << "无此项功能,请重新选择" << endl; cout << endl << endl;
goto s;
}
switch (n)
{
case 1:
cout << "两空间矢量的加法为:" << endl; d.jaf(v1, v2);
cout << endl << endl;;
goto s;
case 2:
cout << "两空间矢量的减法为:" << endl; d.jif(v1, v2);
cout << endl << endl;
goto s;
case 3:
cout << "两空间矢量的点积为:" << endl; d.dji(v1, v2);
cout << endl << endl;
goto s;
case 4:
cout << "两空间矢量的叉积为:" << endl; d.cji(v1, v2);
cout << endl << endl;
goto s;
case 5:
goto m;
case 6:
exit(0);
};
return 0;
}
收集于网络……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐