octree attempt in progress
This commit is contained in:
@@ -99,16 +99,36 @@ 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:
|
||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user