Antkeeper
0.0.1
src
engine
math
transform-operators.hpp
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2023 Christopher J. Howard
3
*
4
* This file is part of Antkeeper source code.
5
*
6
* Antkeeper source code is free software: you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation, either version 3 of the License, or
9
* (at your option) any later version.
10
*
11
* Antkeeper source code is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with Antkeeper source code. If not, see <http://www.gnu.org/licenses/>.
18
*/
19
20
#ifndef ANTKEEPER_MATH_TRANSFORM_OPERATORS_HPP
21
#define ANTKEEPER_MATH_TRANSFORM_OPERATORS_HPP
22
23
#include <
engine/math/transform-type.hpp
>
24
#include <
engine/math/transform-functions.hpp
>
25
27
template
<
class
T>
28
[[nodiscard]]
math::transform<T>
operator*
(
const
math::transform<T>
& x,
const
math::transform<T>
& y);
29
31
template
<
class
T>
32
[[nodiscard]]
math::vector<T, 3>
operator*
(
const
math::transform<T>
& t,
const
math::vector<T, 3>
& v);
33
41
template
<
class
T>
42
math::transform<T>
&
operator*=
(
math::transform<T>
& x,
const
math::transform<T>
& y);
43
44
template
<
class
T>
45
inline
math::transform<T>
operator*
(
const
math::transform<T>
& x,
const
math::transform<T>
& y)
46
{
47
return
mul
(x, y);
48
}
49
50
template
<
class
T>
51
inline
math::vector<T, 3>
operator*
(
const
math::transform<T>
& t,
const
math::vector<T, 3>
& v)
52
{
53
return
mul
(t, v);
54
}
55
56
template
<
class
T>
57
inline
math::transform<T>
&
operator*=
(
math::transform<T>
& x,
const
math::vector<T, 3>
& y)
58
{
59
return
(x = x * y);
60
}
61
62
#endif
// ANTKEEPER_MATH_TRANSFORM_OPERATORS_HPP
63
math::mul
constexpr matrix< T, P, M > mul(const matrix< T, N, M > &a, const matrix< T, P, N > &b) noexcept
Multiplies two matrices.
Definition:
math/matrix.hpp:904
math::transform
Represents 3D TRS transformation.
Definition:
transform-type.hpp:35
math::vector< T, 3 >
transform-functions.hpp
operator*
math::transform< T > operator*(const math::transform< T > &x, const math::transform< T > &y)
Multiplies two transforms.
Definition:
transform-operators.hpp:45
operator*=
math::transform< T > & operator*=(math::transform< T > &x, const math::transform< T > &y)
Multiplies two transforms and stores the result in the first transform.
transform-type.hpp