Unravel Engine C++ Reference
Loading...
Searching...
No Matches
rotate_path.hpp
Go to the documentation of this file.
1
#ifndef GENERATOR_ROTATEPATH_HPP
2
#define GENERATOR_ROTATEPATH_HPP
3
4
#include "
axis.hpp
"
5
#include "
transform_path.hpp
"
6
7
namespace
generator
8
{
9
11
template
<
typename
path_t>
12
class
rotate_path_t
13
{
14
private
:
15
using
impl_t
=
transform_path_t<path_t>
;
16
impl_t
transform_path_;
17
18
public
:
19
rotate_path_t
(path_t path,
const
gml::dquat&
rotation
)
20
: transform_path_{
std
::move(path),
21
[
rotation
](
path_vertex_t
& value)
22
{
23
value.position =
gml::transform
(
rotation
, value.position);
24
value.normal =
gml::transform
(
rotation
, value.normal);
25
}}
26
{
27
}
28
29
rotate_path_t
(path_t path,
double
angle,
const
gml::dvec3& axis)
30
:
rotate_path_t
{
std
::move(path),
gml
::qrotate(angle, axis)}
31
{
32
}
33
34
rotate_path_t
(path_t path,
double
angle,
axis_t
axis)
35
:
rotate_path_t
{
std
::move(path),
36
gml
::qrotate(angle,
37
axis ==
axis_t
::
X
38
?
gml
::dvec3{1.0, 0.0, 0.0}
39
: (axis ==
axis_t
::
Y
?
gml
::dvec3{0.0, 1.0, 0.0} :
gml
::dvec3{0.0, 0.0, 1.0}))}
40
{
41
}
42
43
using
edges_t
=
typename
impl_t::edges_t
;
44
45
edges_t
edges
() const noexcept
46
{
47
return
transform_path_.edges();
48
}
49
50
using
vertices_t
=
typename
impl_t::vertices_t
;
51
52
vertices_t
vertices
() const noexcept
53
{
54
return
transform_path_.vertices();
55
}
56
};
57
58
template
<
typename
path_t>
59
rotate_path_t<path_t>
rotate_path
(path_t path,
const
gml::dquat&
rotation
)
60
{
61
return
rotate_path_t<path_t>
{std::move(path),
rotation
};
62
}
63
64
template
<
typename
path_t>
65
rotate_path_t<path_t>
rotate_path
(path_t path,
double
angle,
const
gml::dvec3& axis)
66
{
67
return
rotate_path_t<path_t>
{std::move(path), angle, axis};
68
}
69
70
template
<
typename
path_t>
71
rotate_path_t<path_t>
rotate_path
(path_t path,
double
angle,
axis_t
axis)
72
{
73
return
rotate_path_t<path_t>
{std::move(path), angle, axis};
74
}
75
}
// namespace generator
76
77
#endif
axis.hpp
generator::path_vertex_t
Definition
path_vertex.hpp:10
generator::rotate_path_t
Rotates vertices, tangents and normals.
Definition
rotate_path.hpp:13
generator::rotate_path_t::rotate_path_t
rotate_path_t(path_t path, double angle, axis_t axis)
Definition
rotate_path.hpp:34
generator::rotate_path_t::vertices_t
typename impl_t::vertices_t vertices_t
Definition
rotate_path.hpp:50
generator::rotate_path_t::rotate_path_t
rotate_path_t(path_t path, const gml::dquat &rotation)
Definition
rotate_path.hpp:19
generator::rotate_path_t::rotate_path_t
rotate_path_t(path_t path, double angle, const gml::dvec3 &axis)
Definition
rotate_path.hpp:29
generator::rotate_path_t::vertices
vertices_t vertices() const noexcept
Definition
rotate_path.hpp:52
generator::rotate_path_t::edges_t
typename impl_t::edges_t edges_t
Definition
rotate_path.hpp:43
generator::rotate_path_t::edges
edges_t edges() const noexcept
Definition
rotate_path.hpp:45
generator::transform_path_t::vertices_t
Definition
transform_path.hpp:22
generator::transform_path_t
Apply a mutator function to each vertex.
Definition
transform_path.hpp:15
generator::transform_path_t::edges_t
typename impl_t::edges_t edges_t
Definition
transform_path.hpp:66
generator
Definition
any_generator.hpp:7
generator::axis_t
axis_t
Definition
axis.hpp:8
generator::axis_t::X
@ X
generator::axis_t::Y
@ Y
generator::rotate_path
rotate_path_t< path_t > rotate_path(path_t path, const gml::dquat &rotation)
Definition
rotate_path.hpp:59
gml
Definition
math.hpp:13
gml::transform
glm::tvec3< T > transform(const glm::tquat< T > &q, const glm::tvec3< T > &v)
Definition
math.hpp:114
std
Hash specialization for batch_key to enable use in std::unordered_map.
Definition
render_view_keys.h:37
rotation
std::vector< math::quat > rotation
Definition
particle_system_soa.cpp:380
transform_path.hpp
engine
engine
rendering
generator
rotate_path.hpp
Generated by
1.12.0