octree attempt in progress

This commit is contained in:
yggdrasil75
2025-11-14 05:45:29 -05:00
parent 6f2db6e52e
commit c285647135

View File

@@ -99,17 +99,37 @@ public:
}; };
class SpatialCell { class SpatialCell2Leaf {
private: private:
float size; static constexpr float SIZE = 10;
float radius; Vec2 origin;
std::unordered_map<Vec2, std::vector<size_t>, Vec2::Hash> grid; std::vector<size_t> ids;
size_t id; //this leaf nodes id
public: public:
SpatialCell2Leaf(const Vec2& origin, size_t id) : origin(origin), id(id) {}
void insertID(size_t id, Vec2& pos) { void insertID(size_t id, Vec2& pos) {
//if (pos.distance(origin) < size) {
ids.push_back(id);
//}
} }
void safeInsertID(size_t id, Vec2& pos) {
if (pos.distance(origin) < SIZE) {
ids.push_back(id);
}
}
std::vector<size_t> getIds() {
return ids;
}
const Vec2& getOrigin() const { return origin; }
}; };
class SpatialGrid2 {
private:
std::unordered_map<Vec2, SpatialCell2Leaf, Vec2::Hash> cells;
public:
}
class Grid2 { class Grid2 {
private: private:
//all positions //all positions
@@ -131,7 +151,7 @@ private:
float neighborRadius = 1.0f; float neighborRadius = 1.0f;
//TODO: spatial map //TODO: spatial map
std::unordered_map<Vec2, size_t> inversetable; std::unordered_map<Vec2, std::vector<size_t>, Vec2::Hash> spatialtable;
public: public:
//get position from id //get position from id
Vec2 getPositionID(size_t id) const { Vec2 getPositionID(size_t id) const {