summary refs log tree commit diff
path: root/src/Math/Grid.hpp
blob: 8c0c4230ce0c07b04931722cf014e8ddaaac53f1 (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
#pragma once

#include "Vector.hpp"

namespace Math {

struct GridCellBoundaries {
    Real 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 {
    Real 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);

}