#include "Vector3D.h" Vector3D::Vector3D() { _x = 1; _y = 1; _z = 1; } Vector3D::Vector3D(float x, float y, float z) { _x = x; _y = y; _z = 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; } const 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(); } float Vector3D::Length(const Vector3D v1, const Vector3D v2) { return (float)sqrt(pow((v1.GetX() - v2.GetX()), 2) + pow((v1.GetY() - v2.GetY()), 2) + pow((v1.GetZ() - v2.GetZ()), 2)); } 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()); } Vector3D& Vector3D::operator= (const Vector3D& rhs) { if (this != &rhs) { Copy(rhs); } return *this; } const Vector3D Vector3D::operator+ (const Vector3D& rhs) const { return Vector3D(_x + rhs.GetX(), _y + rhs.GetY(), _z + rhs.GetZ()); } const Vector3D Vector3D::operator/ (const float rhs) const { return Vector3D(_x / rhs, _y / rhs, _z / rhs); } const Vector3D Vector3D::operator/ (const int rhs) const { return Vector3D(_x / rhs, _y / rhs, _z / rhs); } void Vector3D::Copy(const Vector3D& other) { _x = other.GetX(); _y = other.GetY(); _z = other.GetZ(); }