/* * Copyright (c) 2025 Konrad Gębik * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see */ #include #include #include "Vector.hpp" Vector operator*(Vector v, double a) { return {v.x*a, v.y*a, v.z*a}; } Vector operator*(double a, Vector v) { return v*a; } Vector operator/(Vector v, double a) { return {v.x/a, v.y/a, v.z/a}; } Vector operator+(Vector v, Vector w) { return v += w; } Vector operator-(Vector v, Vector w) { return v -= w; } std::ostream& operator<<(std::ostream& stream, const Vector& v) { stream << v.x << ' ' << v.y << ' ' << v.z; return stream; } //Returns squared norm of vector double Vector::normSq() const { return x*x + y*y + z*z; } double Vector::norm() const { return std::sqrt(x*x + y*y + z*z); } double Vector::dotProduct(Vector v) const { return this->x * v.x + this->y * v.y + this->z * v.z; }