many changes and updates
- changed the wifi-estimation api - adjusted test-cases - worked on grid-bulding and grid-importance - new walking modules - fixed some minor issues
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
#include "Helper.h"
|
||||
#include "../../../floorplan/v2/Floorplan.h"
|
||||
|
||||
|
||||
#include <fstream>
|
||||
|
||||
|
||||
|
||||
@@ -23,6 +23,10 @@ private:
|
||||
Helper<T> helper;
|
||||
|
||||
|
||||
std::ofstream outStairs;
|
||||
std::ofstream outDelete;
|
||||
|
||||
|
||||
private:
|
||||
|
||||
// struct Entry {
|
||||
@@ -68,10 +72,14 @@ public:
|
||||
|
||||
/** ctor */
|
||||
Stairs(Grid<T>& grid) : grid(grid), helper(grid) {
|
||||
;
|
||||
outStairs.open("/tmp/quads.dat");
|
||||
outDelete.open("/tmp/delete.dat");
|
||||
}
|
||||
|
||||
|
||||
~Stairs() {
|
||||
outStairs.close();
|
||||
outDelete.close();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -87,6 +95,7 @@ public:
|
||||
const std::vector<Floorplan::StairPart> parts = stair->getParts();
|
||||
const std::vector<Floorplan::Quad3> quads = Floorplan::getQuads(parts, floor);
|
||||
|
||||
|
||||
for (int i = 0; i < (int)parts.size(); ++i) {
|
||||
|
||||
//const Floorplan::StairPart& part = parts[i];
|
||||
@@ -97,6 +106,13 @@ public:
|
||||
const Point3 p3 = quad.p3;
|
||||
const Point3 p4 = quad.p4;
|
||||
|
||||
outStairs << p1.x << " " << p1.y << " " << p1.z << "\n";
|
||||
outStairs << p2.x << " " << p2.y << " " << p2.z << "\n";
|
||||
outStairs << p3.x << " " << p3.y << " " << p3.z << "\n";
|
||||
outStairs << p4.x << " " << p4.y << " " << p4.z << "\n";
|
||||
outStairs << p1.x << " " << p1.y << " " << p1.z << "\n\n\n";
|
||||
|
||||
|
||||
HelperPoly poly; poly.add(p1.xy()); poly.add(p2.xy()); poly.add(p3.xy()); poly.add(p4.xy());
|
||||
|
||||
const int x1 = helper.align(poly.bbox_cm.getMin().x); // ALIGNF?
|
||||
@@ -111,6 +127,9 @@ public:
|
||||
for (int y = y1; y <= y2; y+=gs_cm) {
|
||||
if (!poly.contains( Point2(x,y) )) {continue;}
|
||||
points.push_back(XYZ(x,y,-1));
|
||||
if (y < 500) {
|
||||
int i = 0; (void) i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -185,6 +204,7 @@ public:
|
||||
// keep a list of all vertices below stairwells and remove them hereafter
|
||||
std::vector<T*> toDelete;
|
||||
|
||||
|
||||
// add all stair nodes or replace them with already existing ones
|
||||
for (Intermediate& iNode : stairNodes) {
|
||||
|
||||
@@ -192,7 +212,9 @@ public:
|
||||
const float minDiff = gs_cm * 0.49;
|
||||
|
||||
// nearer than maxDiff? -> delete as this one is unreachable below the stair
|
||||
const float maxDiff = 150;
|
||||
// to prevent errors (e.g. a platform at 1.0 meter) we use 0.98 meter as deleting threshold
|
||||
// otherwise we get problems in some places
|
||||
const float maxDiff = 98;
|
||||
|
||||
// distance between the stair node and the floor above / below
|
||||
const float zDiff1 = std::abs(iNode.node.z_cm - 100*floor->getStartingZ());
|
||||
@@ -223,11 +245,19 @@ public:
|
||||
// remove nodes directly below the stair
|
||||
} else if (zDiff1 < maxDiff) {
|
||||
T* n2 = (T*) grid.getNodePtrFor(GridPoint(iNode.node.x_cm, iNode.node.y_cm, 100*floor->getStartingZ()));
|
||||
outDelete << n2->x_cm << " " << n2->y_cm << " " << n2->z_cm << "\n";
|
||||
if (n2->y_cm < 500) {
|
||||
int i = 0; (void) i;
|
||||
}
|
||||
if (n2) {toDelete.push_back(n2);}
|
||||
|
||||
// remove nodes directly above the stair
|
||||
} else if (zDiff2 < maxDiff) {
|
||||
T* n2 = (T*) grid.getNodePtrFor(GridPoint(iNode.node.x_cm, iNode.node.y_cm, 100*floor->getEndingZ()));
|
||||
outDelete << n2->x_cm << " " << n2->y_cm << " " << n2->z_cm << "\n";
|
||||
if (n2->y_cm < 500) {
|
||||
int i = 0; (void) i;
|
||||
}
|
||||
if (n2) {toDelete.push_back(n2);}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user