le2d v0.4.7
2D game engine framework
 
Loading...
Searching...
No Matches
nvec2.hpp
Go to the documentation of this file.
1#pragma once
2#include <glm/gtx/norm.hpp>
3#include <glm/trigonometric.hpp>
4#include <glm/vec2.hpp>
5
6namespace le {
7inline constexpr auto right_v = glm::vec2{1.0f, 0.0f};
8inline constexpr auto up_v = glm::vec2{0.0f, 1.0f};
9
11class nvec2 : public glm::vec2 {
12 public:
13 [[nodiscard]] static auto normal_or(glm::vec2 xy, glm::vec2 fallback) -> nvec2;
14
15 explicit(false) nvec2(glm::vec2 xy = right_v);
16 explicit(false) nvec2(float x, float y) : nvec2(glm::vec2{x, y}) {}
17
18 [[nodiscard]] auto operator-() const -> nvec2 { return {InPlace{}, {-x, -y}}; }
19
20 [[nodiscard]] static auto from_radians(float r) -> nvec2;
21 [[nodiscard]] auto to_radians() const -> float;
22
23 [[nodiscard]] auto rotated(float radians) const -> nvec2;
24 void rotate(float radians);
25
26 private:
27 struct InPlace {};
28 nvec2(InPlace /*d*/, glm::vec2 const xy) : glm::vec2(xy) {}
29};
30} // namespace le
Normalized 2D vector.
Definition nvec2.hpp:11
explicit(false) nvec2(glm float y
Definition nvec2.hpp:16
auto to_radians() const -> float
auto rotated(float radians) const -> nvec2
void rotate(float radians)
static auto normal_or(glm::vec2 xy, glm::vec2 fallback) -> nvec2
Definition animation.hpp:8
constexpr auto up_v
Definition nvec2.hpp:8
constexpr auto right_v
Definition nvec2.hpp:7