实现一个三维矢量库,完成矢量之间的加减、点乘,叉乘
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; }收集于网络……
相关文章推荐
- 建立一个二维坐标系的类TwoCoor,用x、y表示坐标值,实现两坐标点的加减运算,计算两坐标点之间的距离,并重载输入输出运算符,使之能够直接输入输出坐标点的坐标值。
- 又完成一个网页抽取器(企业相关网页)--实现了网页要素,企业要素抽取,内容相关度,网页质量评分
- 习题10:参照Windows系统“附件”中的“计算器”,自行编写一个简易的计算器。要求:可以实现由0~4构成的整数的加减运算。
- 一个app,多个入口图标,activity-alias实现多程序入口并显示指定view完成
- [C++应用程序性能优化]类的静态成员变量实现同一个类多个对象之间共享数据
- 使用反射+缓存+委托,实现一个不同对象之间同名同类型属性值的快速拷贝
- (转)使用一个下拉框或文本框+列表框的方式实现类似IE地址栏自动完成的功能
- 写一个函数,完成内存之间的拷贝。[考虑问题是否全面](转)
- 完成一个GUI应用程序,一个窗口中含有4个按钮,两个label,按照流式布局器进行布局,每个组件之间间隔20px,居右对齐。
- 用 javascript 实现随机抽奖 ( 从 1 到 输入值之间任取一个整数值)
- 编写一个项目,实现页面之间切换时的动画效果。上传代码并描述步骤
- 用Ext JS+ Ajax 实现的一个树形和表格的联动模块 支持树和表格之间的节点拖放 源码
- 完成一个程序,打印一个树状的目录结构。子目录与父目录之间有两个空格的缩进
- 写一个function实现数组内每个元素之间加法的递代运算?
- 一个app,多个入口图标,activity-alias实现多程序入口并显示指定view完成
- 现在正在搞博士的东西,导师要求将一个二维的图片转换成现实生活中的三维图片,实现仿真,这个课题真有点难度,现在还莫不着头绪,查了相关的一些知识,可就是没有一个系统的,希望大家各抒己见,提一些好的建议,好的文章
- 写一个函数,完成内存之间的拷贝。[考虑问题是否全面](转)
- jquery怎么实现点击一个元素更换背景图片,连续点击永远在2张图片之间更换
- 使用反射+缓存+委托,实现一个不同对象之间同名同类型属性值的快速拷贝
- 一个app,多个入口图标,activity-alias实现多程序入口并显示指定view完成