c++实现Vector

本文介绍了如何在C++中实现Vector,包括头文件Vector.h和实现文件Vector.cpp,以及如何在main函数中使用自定义的Vector类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//Vector.h

extern const double uZero;
class Vector3
{
	float x, y, z;
public:
	Vector3() { x = 0; y = 0; z = 0; };
	Vector3(float x1, float y1, float z1) { x = x1, y = y1, z = z1; }
	Vector3	operator+(Vector3 &c);
	Vector3	operator-(Vector3 &c);
	Vector3	operator*(Vector3 &c);
	Vector3	operator/(Vector3 &c);
	void	operator=(Vector3 &c);
	float length();
	float dot(const Vector3 &c);
	void normalize();
	Vector3 crossProduct(const Vector3 &v);
	void printVec3();
	
	~Vector3();
};

//Vector.cpp

#include "Vector.h"
const double uZero = 1e-6;
Vector3 Vector3::operator+(Vector3 & c)
{
	return Vector3(x+c.x,y+c.y,z+c.z);
}

Vector3 Vector3::operator-(Vector3 & c)
{
	return Vector3(x-c.x,y-c.y,z-c.z);
}

Vector3 Vector3::operator*(Vector3 & c)
{
	return Vector3(x*c.x,y*c.y,z*c.z);
}

Vector3 Vector3::operator/(Vector3 & c)
{
	if (fabsf(c.x) <= uZero || fabsf(c.y) <= uZero | fabsf(c.z) <= uZero)
	{
		return *this;
	}
	return Vector3(x/c.x,y/c.y,z/c.z);
}

void Vector3::operator=(Vector3 & c)
{
	x = c.x;
	y = c.y;
	z = c.z;
}

float Vector3::length()
{
	return sqrtf(dot(*this));
}

float Vector3::dot(const Vector3 & c)
{
	return x*c.x,y*c.y,z*c.z;
}

void Vector3::normalize()
{
	float len = length();
	if (len < uZero)
		len = 1;
	x *= len;
	y *= len;
	z *= len;


}

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

void Vector3::printVec3()
{
	cout << "(" << x << "," << y << "," << z << ")" << endl;
}

Vector3::~Vector3()
{
}

//main使用

Vector3 vec1(1.0f,2.0f,3.0f);
	Vector3 vec2(2.0f, 2.0f, 3.0f);
	Vector3 vecResult = vec1.crossProduct(vec2);
	Vector3 vec3(3.0f, 2.0f, 3.0f);
	Vector3 vec4(4.0f, 2.0f, 3.0f);
	Vector3 vec5(5.0f, 2.0f, 3.0f);
	vecResult.printVec3();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值