#include "Vector3D.h" Vector3D::Vector3D() { SetX(1); SetY(1); SetZ(1); } Vector3D::Vector3D(float x, float y, float z) { SetX(x); SetY(y); SetZ(z); } Vector3D::Vector3D(const Vector3D& other) { Copy(other); } Vector3D::~Vector3D() { } // Accessors float Vector3D::GetX() const { return _x; } void Vector3D::SetX(const float x) { _x = x; } float Vector3D::GetY() const { return _y; } void Vector3D::SetY(const float y) { _y = y; } float Vector3D::GetZ() const { return _z; } void Vector3D::SetZ(const float z) { _z = z; } void Vector3D::Normalize() { float length = sqrt(_x * _x + _y * _y + _z * _z); if (length != 0) { _x /= length; _y /= length; _z /= length; } } float Vector3D::DotProduct(const Vector3D v1, const Vector3D v2) { return ((v1.GetX() * v2.GetX()) + (v1.GetY() * v2.GetY()) + (v1.GetZ() * v2.GetZ())); } Vector3D Vector3D::CrossProduct(const Vector3D v1, const Vector3D v2) { return Vector3D((v1.GetY() * v2.GetZ()) - (v1.GetZ() * v2.GetY()), (v1.GetZ() * v2.GetX()) - (v1.GetX() * v2.GetZ()), (v1.GetX() * v2.GetY()) - (v1.GetY() * v2.GetX())); } const Vector3D Vector3D::operator+ (const Vector3D& rhs) const { return Vector3D(_x + rhs.GetX(), _y + rhs.GetY(), _z + rhs.GetZ()); } void Vector3D::Copy(const Vector3D& other) { _x = other.GetX(); _y = other.GetY(); _z = other.GetZ(); }