worked on windows

This commit is contained in:
k-a-z-u
2018-07-25 18:12:48 +02:00
parent 0d22d91470
commit baeb8bef11
4 changed files with 91 additions and 12 deletions

View File

@@ -264,7 +264,6 @@ namespace Floorplan3D {
strip.add(p4);
for (const Floorplan::FloorObstacleWallDoor* door : doors) {
Polygon2 pDoor;
const Point2 pds = door->getStart(wall.line);
const Point2 pde = door->getEnd(wall.line);
@@ -274,17 +273,17 @@ namespace Floorplan3D {
const Point3 dp2u(pde.x, pde.y, z1+door->height);
const Point3 dp1u(pds.x, pds.y, z1+door->height);
//auto flattenD1 = [dp1,a] (const Point3 p) {return (p - dp1).rotZ(-a).xz();};
//auto unFlatten1 = [dp1,a] (const Point3 p) {return Point3(p.x, 0, p.y).rotZ(a)+dp1;};
Polygon2 pDoor;
pDoor.add(flatten(dp1));
pDoor.add(flatten(dp2));
pDoor.add(flatten(dp2u));
pDoor.add(flatten(dp1u));
// wall cutout (front/back)
gpFront.remove(pDoor);
gpBack.remove(pDoor);
// 3D framing
strip.add(unFlattenFront2(pDoor[0]));
strip.add(unFlattenBack2(pDoor[0]));
@@ -313,11 +312,55 @@ namespace Floorplan3D {
obs.triangles.push_back(t);
}
// std::vector<Point3> ptsToConnect3;
// for (const Point2 p2 : ptsToConnect) {
// const Point3 p3 = unf
// }
// process all windows within the wall
for (const Floorplan::FloorObstacleWallWindow* win : wall.line->windows) {
const Point2 pws = win->getStart(wall.line);
const Point2 pwe = win->getEnd(wall.line);
const float wz1 = z1 + win->startsAtHeight;
const float wz2 = z1 + win->startsAtHeight + win->height;
const Point3 dp1(pws.x, pws.y, wz1);
const Point3 dp2(pwe.x, pwe.y, wz1);
const Point3 dp2u(pwe.x, pwe.y, wz2);
const Point3 dp1u(pws.x, pws.y, wz2);
Polygon2 pWindow;
pWindow.add(flatten(dp1));
pWindow.add(flatten(dp2));
pWindow.add(flatten(dp2u));
pWindow.add(flatten(dp1u));
// wall cutout (front/back)
gpFront.remove(pWindow);
gpBack.remove(pWindow);
// 3D framing
TriangleStrip strip;
strip.add(unFlattenFront2(pWindow[0]));
strip.add(unFlattenBack2(pWindow[0]));
strip.add(unFlattenFront2(pWindow[3]));
strip.add(unFlattenBack2(pWindow[3]));
strip.add(unFlattenFront2(pWindow[2]));
strip.add(unFlattenBack2(pWindow[2]));
strip.add(unFlattenFront2(pWindow[1]));
strip.add(unFlattenBack2(pWindow[1]));
strip.add(unFlattenFront2(pWindow[0]));
strip.add(unFlattenBack2(pWindow[0]));
for (Triangle3 t : strip.toTriangles()) {
t.reverse();
obs.triangles.push_back(t);
}
}
// Frontseite triangulieren
std::vector<Triangle3> triasFront = gpFront.getTriangles();