render3d-Schnitt: Öffnungen — Brüstung/Sturz-Teilpolygone und Durchblick

WallInput bekommt openings (from/to/sill/height, serde-default). Der Cut
durch eine Öffnung liefert mehrere einfache Rechtecke (Brüstung, Sturz,
Leibungen) statt Lochpolygon — kompatibel zu render2d::FillPolygon. Der
Verdeckungstest behandelt Öffnungen als Durchblick (u-Zuordnung exakt im
Elevationsfall, konservativ undurchsichtig bei kantennaher Ausrichtung);
Fensterrahmen-Kanten werden als projizierte Kanten ausgegeben. Tests
26 auf 29, Beweis-SVG mit Fenster + dahinterliegender Wand neu generiert
(sichtbares Band exakt im Fensterausschnitt). mesh.rs (3D-Vollkoerper)
beruecksichtigt Öffnungen weiterhin nicht — dokumentierte Luecke.
This commit is contained in:
2026-07-03 08:36:35 +02:00
parent 918f60c498
commit f95df75ea1
7 changed files with 687 additions and 34 deletions
+4
View File
@@ -57,6 +57,7 @@ mod tests {
height,
base_elevation: 0.0,
color: [0.8, 0.8, 0.8],
openings: vec![],
}
}
@@ -92,6 +93,7 @@ mod tests {
height: 2.5,
base_elevation: 0.0,
color: [0.8, 0.8, 0.8],
openings: vec![],
},
]);
assert_eq!(mesh.vertex_count(), 2 * VERTS_PER_BOX);
@@ -168,6 +170,7 @@ mod tests {
height: 3.0,
base_elevation: 0.0,
color: [0.8, 0.8, 0.8],
openings: vec![],
};
let mut mesh = Mesh::default();
extrude_wall(&mut mesh, &w);
@@ -187,6 +190,7 @@ mod tests {
height: 2.5,
base_elevation: 0.0,
color: [0.8, 0.8, 0.8],
openings: vec![],
};
let mesh = build_walls_mesh(&[w]);
assert_eq!(mesh.vertex_count(), 0);