/* * Copyright (c) 2021, Jelle Raaijmakers * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include namespace Gfx { template using Matrix3x3 = Matrix<3, T>; template constexpr static Vector3 operator*(Matrix3x3 const& m, Vector3 const& v) { return Vector3( v.x() * m[0, 0] + v.y() * m[0, 1] + v.z() * m[0, 2], v.x() * m[1, 0] + v.y() * m[1, 1] + v.z() * m[1, 2], v.x() * m[2, 0] + v.y() * m[2, 1] + v.z() * m[2, 2]); } typedef Matrix3x3 FloatMatrix3x3; typedef Matrix3x3 DoubleMatrix3x3; } using Gfx::DoubleMatrix3x3; using Gfx::FloatMatrix3x3; using Gfx::Matrix3x3;