3D向量 基本操作运算

标签: 3d向量
682人阅读 评论(0) 收藏 举报
分类:
//左手坐标系z向里,右手坐标系z向外;

#include<iostream>
#include<sstream>
#include<string>

using namespace std;

struct Vector3
{
	float x,y,z;

	Vector3(float a,float b,float c)
	{
		x=a;
		y=b;
		z=c;
	}

	Vector3 operator+(const Vector3& v)
	{
		return Vector3(x+v.x,y+v.y,z+v.z);
	}

	Vector3 operator-(const Vector3& v)
	{
		return Vector3(x-v.x,y-v.y,z-v.z);
	}

	//点积;
	float dot(const Vector3& v)
	{
		return x*v.x+y*v.y+z*v.z;
	}

	//叉积;
	Vector3 cross(const Vector3& v)
	{
		return Vector3(y*v.z-z*v.y,z*v.x-x*v.z,x*v.y-y*v.x);
	}

	std::string ToString()
	{
		stringstream ss;
		ss<<"("<<x<<","<<y<<","<<z<<")"<<endl;
		return ss.str();
	}
};

int main()
{
	Vector3 vec1(1.0f,1.0f,0.0f);
	Vector3 vec2(0.0f,1.0f,0.0f);

	cout<<"vec1+vec2 ="<<(vec1+vec2).ToString()<<endl;

	cout<<"vec1.dot(vec2) ="<<vec1.dot(vec2)<<endl;

	cout<<"vec1.cross(vec2) ="<<vec1.cross(vec2).ToString()<<endl;


	return 0;
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1068521次
    • 积分:14064
    • 等级:
    • 排名:第875名
    • 原创:326篇
    • 转载:108篇
    • 译文:6篇
    • 评论:251条
    我的Github
    @ThisisGame
    博客专栏
    最新评论