worked on windows
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user