Haus - Oeffnungen aus den Fassadenplaenen von EHLE abgegriffen. Zum Garten steht im Erdgeschoss eine einzige, mittige Fensterfront (x -8.82 bis -4.67), daneben das Lamellenband vor dem gedeckten Sitzplatz; im Obergeschoss zwei Fenster mit zwei schmalen Lamellen dazwischen. - Der gedeckte Sitzplatz ist nur noch gegen Westen offen, so wie es die Suedwestfassade als "Aussensitzplatz" zeigt. Gegen den Garten steht dort eine geschlossene Wand - bisher schaute man durch die Fassade hinein. - Hauszugang an der Nordostfassade statt an der Nordwestfassade: Tuerfluegel und feststehende Verglasung, zusammen 3.15 m, darueber das Vordach. Das Vordach kennt jetzt seine Fassadenseite. - Die Fassadennamen im Datenmodell waren vertauscht; jetzt mit Tabelle im README festgehalten. Garten - Sichtschutz: die gruenen Punkte im Kiesbett sind Ziergraeser, keine Polster. Neue Halmgeometrie - schmales, sich verjuengendes Band, das nach oben ueberhaengt, rund 1.10 m. Die Bodenleuchten sind jetzt Strahler und leuchten Stelen und Graeser von unten an. - Baenkli: die Fuesse standen quer zur Sitzplatte, weil der Versatz in Welt-Z statt entlang der gedrehten Achse gerechnet wurde. - Obere Ebene bis an das Kraeuterbeet eben auf -0.02. Zwischen Grillfeld und Kraeuterbeet stieg der Rasen um gut 30 cm an. - Unter dem Spielhaus steht der Betonklotz aus dem Plan (graues Rechteck 1.01 x 2.70 m); die offene Plattform daneben bleibt auf Stuetzen. - Aus dem Gartenhaus wird ein Gartenschrank: 1.80 x 0.50 m, 2.00 m hoch, mit dem Ruecken in der Ecke und den Doppeltueren zum Garten. - Neben dem Gelaender der Osttreppe lag Rasen; dort liegt jetzt derselbe Belag wie auf dem Weg, bis an den Treppenkopf. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+57
-23
@@ -98,7 +98,12 @@ export const LEVELS = [
|
||||
// steht dort "Steigung 9.9%".
|
||||
id: 'weg-ost', plane: [0, 0.1178, 0.1224], types: ['tegula'],
|
||||
note: 'Ostweg als Rampe',
|
||||
polygon: [[2.80, -4.30], [4.55, -4.30], [4.55, 5.05], [2.80, 5.05]],
|
||||
polygon: [[2.05, -4.30], [4.55, -4.30], [4.55, 5.05], [2.05, 5.05]],
|
||||
},
|
||||
{
|
||||
id: 'weg-ost-gelaender', level: -0.45, types: ['tegula'],
|
||||
note: 'Belagstreifen neben dem Gelaender der Osttreppe',
|
||||
polygon: [[2.05, -6.60], [2.92, -6.60], [2.92, -4.15], [2.05, -4.15]],
|
||||
},
|
||||
{
|
||||
id: 'weg-ost-unten', level: -1.57, types: ['tegula'],
|
||||
@@ -118,7 +123,7 @@ export const LEVELS = [
|
||||
// ohne feste Vorgabe zieht die Interpolation den Rasen huegelig hoch.
|
||||
id: 'oben', level: -0.02, flatten: true,
|
||||
note: 'Obere Ebene: Rasen und Kiesfeld, eben auf -0.02',
|
||||
polygon: [[-18.30, 0.90], [-8.60, 0.90], [-8.60, 3.90], [-18.30, 3.90]],
|
||||
polygon: [[-18.30, 0.90], [-4.70, 0.90], [-4.70, 4.00], [-18.30, 4.00]],
|
||||
},
|
||||
{
|
||||
id: 'unten',
|
||||
@@ -218,8 +223,11 @@ export const WALLS = [
|
||||
|
||||
/** Freistehende Bauteile und Moeblierung. rot = Drehung um Y in Grad. */
|
||||
export const PROPS = [
|
||||
{ id: 'gartenhaus', type: 'gartenhaus', x: 1.20, z: -3.60, w: 1.8, d: 1.8, h: 2.15, rot: 0,
|
||||
note: 'Standort Gartenhaus 1,8 x 1,8 m' },
|
||||
// Der Plan reserviert 1.8 x 1.8 m fuer das Gartenhaus. Gebaut wird dort ein
|
||||
// schmaler Gartenschrank: 1.80 m breit, nur 0.50 m tief, rund 2.00 m hoch,
|
||||
// mit dem Ruecken in der Ecke und den Tueren zum Garten.
|
||||
{ id: 'gartenschrank', type: 'gartenhaus', x: 1.87, z: -3.58, w: 0.50, d: 1.80, h: 2.00, rot: 0,
|
||||
note: 'Gartenschrank 1.80 x 0.50 m, 2.00 m hoch' },
|
||||
// Der Plan zeichnet zwei Rechtecke: das Podest 1.81 x 2.70 m (x -0.95 bis
|
||||
// 0.86) und darauf die Huette 1.01 x 2.70 m an der Ostseite (x -0.15 bis
|
||||
// 0.86). Die Kote 1.47 im Podest ist die Hoehe des Bodens - ein Stelzenhaus,
|
||||
@@ -274,7 +282,12 @@ export const EXTRA_SURFACES = [
|
||||
// beginnt die Wiese. Zwei Leuchten stehen daran.
|
||||
type: 'tegula',
|
||||
note: 'Weg an der Ostseite, Rampe oberhalb der Treppe (Steigung rund 12%)',
|
||||
polygon: [[2.86, -4.18], [4.45, -4.18], [4.45, 4.96], [2.86, 4.96]],
|
||||
polygon: [[2.12, -4.18], [4.45, -4.18], [4.45, 4.96], [2.12, 4.96]],
|
||||
},
|
||||
{
|
||||
type: 'tegula',
|
||||
note: 'Belagstreifen neben dem Gelaender, bis an den Kopf der Osttreppe',
|
||||
polygon: [[2.12, -6.55], [2.86, -6.55], [2.86, -4.18], [2.12, -4.18]],
|
||||
},
|
||||
{
|
||||
type: 'tegula',
|
||||
@@ -386,25 +399,46 @@ export const BUILDING = {
|
||||
* der Suedwestecke, oben vom Obergeschoss ueberdeckt.
|
||||
*/
|
||||
loggia: { x0: -13.82, z0: -3.06, x1: -9.06, z1: 0.96, ceiling: 2.75 },
|
||||
/** Vordach ueber dem Hauseingang an der Nordostfassade (siehe Foto). */
|
||||
canopy: { a: -3.20, b: 0.28, depth: 1.35, y: 2.60, thickness: 0.16 },
|
||||
/**
|
||||
* Vordach ueber dem Hauszugang an der Nordostfassade (x = +0.28). Der
|
||||
* Situationsplan zeigt ein Eingangspodest von 1.05 + 1.13 m Tiefe, darueber
|
||||
* das "Vordach (Holzbauer)".
|
||||
*/
|
||||
canopy: { face: 'east', a: -2.95, b: 0.75, depth: 2.20, y: 2.28, thickness: 0.16 },
|
||||
/**
|
||||
* Oeffnungen, abgegriffen aus den Fassadenplaenen von EHLE Architekten
|
||||
* (1:100, 27.04.2021). Die Fassaden heissen dort nach Himmelsrichtung:
|
||||
* Suedostfassade = z +0.96 (lang, zum Garten) -> face 'south'
|
||||
* Nordostfassade = x +0.28 (kurz, Hauszugang) -> face 'east'
|
||||
* Suedwestfassade = x -13.82 (kurz, zur Terrasse) -> face 'west'
|
||||
* Nordwestfassade = z -6.87 (lang, zum Nachbarn) -> face 'north'
|
||||
* Die Nordwestfassade ist im Plansatz nicht gezeichnet; sie steht am
|
||||
* Nachbarbau und bleibt geschlossen.
|
||||
*/
|
||||
openings: [
|
||||
// Suedwestfassade (z = 0.96 / 0.51) - grosse Fensterfronten zum Garten
|
||||
{ face: 'south', a: -4.40, b: -0.20, sill: 0.0, head: 2.45, kind: 'glass' },
|
||||
{ face: 'south', a: -12.90, b: -9.40, sill: 0.0, head: 2.45, kind: 'glass' },
|
||||
{ face: 'south', a: -3.90, b: -0.60, sill: 3.35, head: 5.00, kind: 'glass', upper: true },
|
||||
{ face: 'south', a: -12.60, b: -9.70, sill: 3.35, head: 5.00, kind: 'glass', upper: true },
|
||||
// Westfassade (x = -13.82) - Fenster
|
||||
{ face: 'west', a: -5.84, b: -4.24, sill: 0.85, head: 2.35, kind: 'window' },
|
||||
{ face: 'west', a: -5.60, b: -4.50, sill: 3.75, head: 5.00, kind: 'window', upper: true },
|
||||
// Nordostfassade (z = -6.87) - Eingang und Lamellenfenster
|
||||
{ face: 'north', a: -1.90, b: -0.90, sill: 0.0, head: 2.35, kind: 'door' },
|
||||
{ face: 'north', a: -5.60, b: -3.90, sill: 0.90, head: 2.35, kind: 'window' },
|
||||
{ face: 'north', a: -11.60, b: -10.20, sill: 0.90, head: 2.35, kind: 'slats' },
|
||||
{ face: 'north', a: -5.40, b: -4.10, sill: 3.75, head: 5.10, kind: 'window', upper: true },
|
||||
{ face: 'north', a: -11.40, b: -10.40, sill: 3.75, head: 5.10, kind: 'slats', upper: true },
|
||||
// Ostfassade (x = 0.28)
|
||||
{ face: 'east', a: -5.60, b: -4.30, sill: 0.90, head: 2.35, kind: 'window' },
|
||||
// -- Suedostfassade (z = +0.96), zum Garten ---------------------------
|
||||
// Erdgeschoss: das Lamellenband vor dem gedeckten Sitzplatz und die
|
||||
// grosse, mittig sitzende Fensterfront.
|
||||
{ face: 'south', a: -12.44, b: -9.32, sill: 0.15, head: 2.20, kind: 'slats' },
|
||||
{ face: 'south', a: -8.82, b: -4.67, sill: 0.0, head: 2.19, kind: 'glass' },
|
||||
// Obergeschoss: zwei Fenster aussen, dazwischen zwei schmale Lamellen.
|
||||
{ face: 'south', a: -12.44, b: -9.98, sill: 3.08, head: 4.90, kind: 'window', upper: true },
|
||||
{ face: 'south', a: -8.90, b: -7.67, sill: 3.30, head: 4.90, kind: 'slats', upper: true },
|
||||
{ face: 'south', a: -6.55, b: -5.40, sill: 3.30, head: 4.90, kind: 'slats', upper: true },
|
||||
{ face: 'south', a: -3.60, b: -1.10, sill: 3.08, head: 4.90, kind: 'window', upper: true },
|
||||
|
||||
// -- Nordostfassade (x = +0.28), Hauszugang ---------------------------
|
||||
// Der Zugang ist ein Element aus Tuerfluegel und feststehender
|
||||
// Verglasung, zusammen rund 3.15 m breit.
|
||||
{ face: 'east', a: -0.65, b: 0.48, sill: 0.0, head: 2.20, kind: 'door' },
|
||||
{ face: 'east', a: -2.67, b: -0.71, sill: 0.0, head: 2.20, kind: 'glass' },
|
||||
{ face: 'east', a: -6.40, b: -5.54, sill: 1.19, head: 2.15, kind: 'slats' },
|
||||
{ face: 'east', a: -5.93, b: -3.36, sill: 3.18, head: 4.94, kind: 'window', upper: true },
|
||||
|
||||
// -- Suedwestfassade (x = -13.82), zur Terrasse -----------------------
|
||||
// Der grosse Ausschnitt daneben ist der gedeckte Sitzplatz selbst.
|
||||
{ face: 'west', a: -5.60, b: -3.91, sill: 0.42, head: 2.01, kind: 'slats' },
|
||||
{ face: 'west', a: -5.71, b: -3.07, sill: 3.17, head: 4.97, kind: 'window', upper: true },
|
||||
],
|
||||
};
|
||||
|
||||
|
||||
+12
-1
@@ -173,6 +173,15 @@ for (const st of stelen) {
|
||||
}
|
||||
stelen.sort((a, b) => a.z - b.z || a.x - b.x);
|
||||
|
||||
/**
|
||||
* Die gruenen Punkte, die im Plan zwischen den Travertinstelen im Kiesbett
|
||||
* stehen, sind keine Polster, sondern Ziergraeser - sie wachsen an den
|
||||
* Stelen hoch und werden von den Bodenleuchten angestrahlt.
|
||||
*/
|
||||
function imKiesbett(x, z) {
|
||||
return stelen.some((s) => Math.hypot(s.x - x, s.z - z) < 1.1);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// 2. Hecken und Pflanzen aus den Plankreisen
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -187,7 +196,9 @@ for (const s of raw.shapes) {
|
||||
const { cx, cz, r } = s.circle;
|
||||
if (r < 0.06) continue; // Lampensymbole und Punktraster
|
||||
if (treeAt(cx, cz)) continue; // Solitaere kommen aus dem Authoring
|
||||
plants.push({ type, x: round(cx), z: round(cz), r: round(r, 2) });
|
||||
// Kraeuter im Kiesbett des Sichtschutzes sind Ziergraeser.
|
||||
const art = (type === 'kraut' || type === 'gras') && imKiesbett(cx, cz) ? 'gras' : type;
|
||||
plants.push({ type: art, x: round(cx), z: round(cz), r: round(r, 2) });
|
||||
}
|
||||
// Der Ligusterhecken-Streifen ist im Plan eine Flaeche, keine Kreise.
|
||||
for (const s of raw.shapes) {
|
||||
|
||||
Reference in New Issue
Block a user