📄 vector3d.cpp
字号:
//--------------------------------------------------
// Desc: 3D Vector
// Author: artsylee/2007.4.2
//--------------------------------------------------
#include "Vector3D.h"
Vector3D::Vector3D()
{
x = 0.0f;
y = 0.0f;
z = 0.0f;
}
Vector3D::Vector3D(const Vector3D &v)
{
x = v.x;
y = v.y;
z = v.z;
}
Vector3D::Vector3D(float fx, float fy, float fz)
{
x = fx;
y = fy;
z = fz;
}
__forceinline Vector3D Vector3D::operator+(const Vector3D &v) const
{
return Vector3D(x + v.x, y + v.y, z + v.z);
}
__forceinline Vector3D Vector3D::operator-(const Vector3D &v) const
{
return Vector3D(x - v.x, y - v.y, z - v.z);
}
__forceinline Vector3D Vector3D::operator*(float scale) const
{
return Vector3D(x*scale, y*scale, z*scale);
}
__forceinline Vector3D Vector3D::operator/(float scale) const
{
return Vector3D(x/scale, y/scale, z/scale);
}
__forceinline float Vector3D::operator*(const Vector3D &v) const
{
return x*v.x + y*v.y + z*v.z;
}
__forceinline Vector3D Vector3D::operator%(const Vector3D &v) const
{
return Vector3D(y*v.z-z*v.y, z*v.x-x*v.z, x*v.y-y*v.x);
}
__forceinline Vector3D& Vector3D::operator=(const Vector3D &v)
{
x = v.x;
y = v.y;
z = v.z;
return *this;
}
__forceinline Vector3D& Vector3D::operator+=(const Vector3D &v)
{
x += v.x;
y += v.y;
z += v.z;
return *this;
}
__forceinline Vector3D& Vector3D::operator-=(const Vector3D &v)
{
x -= v.x;
y -= v.y;
z -= v.z;
return *this;
}
__forceinline Vector3D& Vector3D::operator*=(float scale)
{
x *= scale;
y *= scale;
z *= scale;
return *this;
}
__forceinline float Vector3D::LengthSquared() const
{
return x*x + y*y + z*z;
}
__forceinline float Vector3D::Length() const
{
return sqrtf(x*x + y*y + z*z);
}
__forceinline Vector3D& Vector3D::Normalize()
{
this->operator *= (1.0f/Length());
return *this;
}
__forceinline Vector3D Vector3D::operator~() const
{
Vector3D r(*this);
r.Normalize();
return r;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -