计算几何 矢量表示

来源:互联网 发布:音频剪切合并软件 mac 编辑:程序博客网 时间:2024/05/16 09:42

#include<iostream>#include<cmath>using namespace std;struct Vector{double x;   //表示从0点到 (x,y)的矢量。 double y;   //对矢量只关心方向和长度,不关心(位置)起点终点Vector(){   //构造函数  无参构造 }Vector(double xx,double yy):x(xx),y(yy){  //两参构造 }//矢量加法 Vector operator+(const Vector &p)const{return Vector(p.x+x,p.y+y);} //矢量减法Vector operator-(const Vector &p)const{return Vector(x-p.x,y-p.y);}//矢量点乘double operator*(const Vector &p)const{return p.x*x+p.y*y;} //矢量叉乘double operator^(const Vector &p)const{return p.x*y-p.y*x;} //矢量模长double length(){return sqrt(x*x+y*y);} //矢量单位化Vector unit(){return Vector(x/length(),y/length());} //矢量投影长度 double project(const Vector &p){return p*unit();} }; int main(){Vector A(3,4),B(1,0),C;double c;C = A + B;printf("%.2lf %.2lf\n",C.x,C.y);C = A - B;printf("%.2lf %.2lf\n",C.x,C.y);c = A * B;printf("%.2lf\n",c);c = A ^ B;printf("%.2lf\n",c);printf("%.2lf %.2lf\n",A.length(),B.length());C = A.unit();printf("%.2lf %.2lf\n",C.x,C.y);c = B.project(A);//A在B方向的投影 printf("%.2lf\n",c);return 0;}


原创粉丝点击