summary refs log tree commit diff
path: root/src/Math/Grid.hpp
blob: 1c1a7cab77948fcf84689adfbf9bf93cea9596e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#pragma once

#include "Common.hpp"
#include "Matrix.hpp"

namespace Math {

struct GridCellBoundaries {
    float x1, x2, y1, y2;

    [[nodiscard]] Vector<2> top_left() const;
    [[nodiscard]] Vector<2> top_right() const;
    [[nodiscard]] Vector<2> bottom_left() const;
    [[nodiscard]] Vector<2> bottom_right() const;
};

GridCellBoundaries grid_cell_for_point(Vector<2> point);

struct CubeCellBoundaries {
    float x1, x2, y1, y2, z1, z2;

    [[nodiscard]] Vector<3> front_top_left() const;
    [[nodiscard]] Vector<3> front_top_right() const;
    [[nodiscard]] Vector<3> front_bottom_left() const;
    [[nodiscard]] Vector<3> front_bottom_right() const;
    [[nodiscard]] Vector<3> back_top_left() const;
    [[nodiscard]] Vector<3> back_top_right() const;
    [[nodiscard]] Vector<3> back_bottom_left() const;
    [[nodiscard]] Vector<3> back_bottom_right() const;

    [[nodiscard]] GridCellBoundaries grid_cell() const;
};

CubeCellBoundaries cube_cell_for_point(Vector<3> point);

}