/** * Handgepflegte Ergaenzungen zum Plan. * * Der PDF-Plan liefert Flaechen, Pflanzensymbole und Hoehenkoten. Alles, was * im Plan nur beschriftet ist (Mauerhoehen, Bauteile, Gebaeude), steht hier - * abgeleitet aus den Planbeschriftungen, den Architekturplaenen von EHLE * Architekten (Haus 9a, 27.04.2021) und den Fotos des Ist-Zustands. * * Alle Koordinaten im Site-Frame in Metern: * X = Hausachse ENE (Peilung 61.16 deg) * Z = senkrecht SSE (Peilung 151.16 deg) * Y = Hoehe relativ zum Fixpunkt 0.00 = 651.17 m ue. M. (= OK FB EG Haus 9a) */ /** Farbe im Plan -> Belagsart. Reihenfolge egal, Zuordnung ueber Hex. */ export const SURFACE_BY_COLOR = { '#ffffcc': 'travertin80', // Travertinplatten 80x80x3, Hauptsitzplatz West '#fcffe7': 'travertin4060', // Travertinplatten 40x60x3 mit Dekorkies + Keramikterrasse Zollet '#f8ffcc': 'travertinstell',// Travertinstellplatten-Streifen '#eee8cc': 'travertinmauer',// Mauerkronen, Sitzmauern, schwebende Stufen '#e5ffe5': 'rasen', '#ccffcc': 'rasen', '#ccff99': 'schotterwiese', '#eeeeee': 'keramik', // Keramikplatten 60x60x2 (bauseits vorhanden) '#bbbbbb': 'verbundstein', // Anpassung Verbundsteine Nachbar '#ddba99': 'beet', '#c0bab4': 'spielsand', '#ffaa00': 'tegula', // Tegula-Pflastersteine grau (im Plan orange markiert) '#ddd299': 'travertinstell', '#73e900': 'ligusterhecke', '#cccccc': 'winkelelement', '#aaaaaa': 'spielhaus', '#b29f3c': 'spielhaus', '#80712a': 'gartenhaus', '#335533': 'roboter', }; /** Pflanzensymbole: Planfarbe -> Art. Radius kommt aus dem Plankreis. */ export const PLANT_BY_COLOR = { '#00bb00': 'eibe', // Eiben `Hilli` 80/100 cm - Heckenpflanzen und ein Solitaer '#66ff33': 'solitaer', '#33ff99': 'solitaer', '#cc5599': 'solitaer', // Parrotia persica, persischer Eisenholzbaum '#99ff66': 'strauch', // Heidelbeeren / Beerenstraeucher '#7fff00': 'gras', '#99ff00': 'kraut', '#cbe900': 'kraut', '#74ff63': 'kraut', '#e8ff64': 'kraut', '#59b500': 'kraut', '#0c8e2d': 'kraut', '#00e93c': 'kraut', '#33ff66': 'kraut', '#339966': 'kraut', '#00dbdd': 'kraut', '#ccccff': 'kraut', '#ff66cc': 'kraut', '#7863ff': 'kraut', }; /** * Solitaergehoelze und Baeume. Die Kronenradien stammen aus den Plankreisen, * die Stammhoehen sind Erfahrungswerte fuer die im Plan gezeigten Groessen. */ export const TREES = [ { name: 'Solitärgehölz Sitzplatz Süd', x: -17.5, z: 1.6, crown: 1.34, height: 4.6, species: 'parrotia' }, { name: 'Solitärgehölz Terrasse NW', x: -19.1, z: -5.5, crown: 0.67, height: 3.2, species: 'parrotia' }, { name: 'Solitärgehölz Flammengrill', x: -4.0, z: 3.9, crown: 0.63, height: 3.0, species: 'parrotia' }, { name: 'Apfelbaum', x: 1.69, z: 4.05, crown: 0.9, height: 3.4, species: 'apfel' }, // Nachbargarten Zollet, im Plan mitgezeichnet { name: 'Solitärgehölz Zollet', x: -17.6, z: -10.2, crown: 1.34, height: 4.6, species: 'parrotia', neighbour: true }, ]; /** * Mauern, Stuetzelemente und Waende. * `path` = Mittellinie, `t` = Dicke, `top`/`base` = Hoehe der Krone bzw. des Fusses * (null = folgt dem Gelaende). Alle Werte aus den Planbeschriftungen und Koten. */ export const WALLS = [ { id: 'travertinmauer-nord', type: 'travertin', note: 'Travertinmauer an der Grenze zum Nachbargrundstueck Zollet, stuetzt rund 1.5 m ab', path: [[-18.17, -6.895], [-13.82, -6.895]], t: 0.55, top: -0.30, base: -1.90, }, { id: 'sitzmauer-nord', type: 'travertin', note: 'Sitzmauer 25 cm ueber der Travertinmauer (gelbe Kote "25" im Plan)', path: [[-20.08, -6.47], [-13.82, -6.47]], t: 0.30, top: -0.03, base: -0.45, }, { id: 'winkelelemente-west', type: 'beton', note: 'Winkelelemente aus Beton entlang der Westgrenze, stuetzen den Garten ueber der Feuerwehrzufahrt', path: [[-20.12, -6.62], [-20.66, 0.51], [-21.70, 0.52], [-21.70, 2.37]], t: 0.22, top: null, base: null, retains: 'west', }, { id: 'travertinsitzmauer-west', type: 'travertin', note: 'Travertinsitzmauer als Abschluss des Hauptsitzplatzes gegen den Rasen', path: [[-18.64, 0.755], [-14.73, 0.755]], t: 0.41, top: 0.40, base: -0.45, seating: true, }, { id: 'travertinsitzmauer-sued', type: 'travertin', note: 'Schenkel der Travertinsitzmauer laengs des Rasens', path: [[-18.44, 0.55], [-18.44, 3.94]], t: 0.40, top: 0.40, base: -0.40, seating: true, }, { id: 'betonmauer-nachbar', type: 'beton', note: 'Bestehende Betonmauer des Suednachbarn entlang der Grenze', path: [[-17.41, 6.07], [1.99, 6.07]], t: 0.20, top: 1.10, base: -0.60, }, { id: 'betonmauer-nachbar-ost', type: 'beton', note: 'Rueckspringender Schenkel der Nachbarmauer', path: [[2.09, 6.07], [2.09, 9.05]], t: 0.20, top: 1.10, base: -0.60, }, { id: 'holzscheiterwand', type: 'holzscheiter', note: 'Holzscheiterwand 150 x 200 cm hinter dem Flammengrill', path: [[-5.75, 4.35], [-4.25, 4.35]], t: 0.45, top: 1.75, base: 0.26, }, { id: 'lamellenwand', type: 'lamellen', note: 'Lamellenwand zum Sitzen: senkrechte Holzlamellen am gedeckten Sitzplatz', path: [[-13.26, 0.91], [-8.73, 0.91]], t: 0.34, top: 2.72, base: -0.05, openSlats: true, }, ]; /** 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' }, { id: 'spielhaus', type: 'spielhaus', x: 0.0, z: 3.15, w: 1.8, d: 2.7, h: 2.30, rot: 0, note: 'Spielhaus durch Zimmermann, Podest auf 1.47' }, { id: 'flammengrill', type: 'flammengrill', x: -6.95, z: 2.45, w: 0.7, d: 0.7, h: 0.85, rot: 0, note: 'Flammengrill im Dekorkiesfeld' }, { id: 'baenkli', type: 'bank', x: -20.62, z: 1.42, w: 0.50, d: 1.50, h: 0.45, rot: 90, note: 'Baenkli aus Travertin' }, { id: 'maehroboter', type: 'roboter', x: -17.87, z: 3.72, w: 0.75, d: 0.55, h: 0.40, rot: 0, note: 'Garage Maehroboter' }, { id: 'wasserhahn', type: 'wasserhahn', x: -13.90, z: -4.60, w: 0.12, d: 0.12, h: 0.85, rot: 0 }, { id: 'schlaufschacht', type: 'schacht', x: -14.35, z: -3.95, w: 0.30, d: 0.30, h: 0.02, rot: 0, note: 'Schlaufschacht D = 30 cm' }, { id: 'gartentor', type: 'tor', x: -21.60, z: 3.30, w: 1.00, d: 0.06, h: 1.10, rot: 0 }, ]; /** * Flaechen, die der Plan nur als weisses Raster zeigt und die deshalb bei der * Farbklassierung durchfallen - Masse aus den Planlinien. */ export const EXTRA_SURFACES = [ { type: 'keramik', note: 'Gedeckter Sitzplatz 14.4 m2, Keramikplatten 60x60x2 cm', polygon: [[-13.93, -3.06], [-8.73, -3.06], [-8.73, 0.86], [-13.93, 0.86]], }, { type: 'travertin80', note: 'Schwebende Stufe Travertin, obere Tritthoehe -0.17', polygon: [[-14.74, -2.69], [-13.93, -2.69], [-13.93, 0.56], [-14.74, 0.56]], }, { type: 'travertin80', note: 'Schwebende Stufe Travertin, untere Tritthoehe -0.33', polygon: [[-15.28, -3.08], [-14.48, -3.08], [-14.48, 0.12], [-15.28, 0.12]], }, { type: 'travertin80', note: 'Schwebende Stufen beim Gartentor an der Suedwestecke', polygon: [[-21.45, 2.15], [-20.65, 2.15], [-20.66, 3.75], [-21.45, 3.75]], }, { type: 'tegula', note: 'Feuerwehrzufahrt und Zugangsweg, Tegula-Pflastersteine grau', polygon: [[-25.60, -9.00], [-22.10, -9.00], [-22.10, 6.40], [-25.60, 6.40]], }, ]; /** * Travertinstelen: aufrechte Steinstelen als Raumteiler entlang der Beete. * Positionen aus den Planbeschriftungen "Travertinstelen". */ export const STELEN = [ { x: -19.55, z: -3.10, h: 0.90 }, { x: -19.30, z: -2.30, h: 1.15 }, { x: -19.05, z: -1.55, h: 0.75 }, { x: -13.30, z: 4.45, h: 1.05 }, { x: -12.60, z: 4.45, h: 0.80 }, { x: -10.30, z: 4.60, h: 1.10 }, { x: -9.60, z: 4.60, h: 0.85 }, { x: -1.30, z: 4.55, h: 1.00 }, { x: -0.60, z: 4.55, h: 0.75 }, ]; /** * Gebaeude. Das Wohnhaus 9a ist massgetreu aus dem Gartenplan uebernommen, * die Hoehen stammen aus der Suedwest- und Nordostfassade 1:100: * OK FB EG 651.17 -> 0.00 OK FB OG 654.07 -> +2.90 * OK Attika 657.32 -> +6.15 Nachbar Nr. 9 OK FB EG 649.47 -> -1.70 */ export const BUILDING = { id: 'haus-9a', name: 'Haus 9a - Jeanine und Damian Kellenberger', floorLevel: 0.0, upperLevel: 2.9, roofLevel: 6.15, parapet: 0.35, /** * Aussenkante Fassade. Der Baukoerper ist im Grundriss ein Rechteck von * 14.10 x 7.83 m; die Masse stammen aus den schwarzen Wandflaechen des * Gartenplans (Nordostfassade z = -6.87, Suedwestfassade z = +0.96). */ outline: [[-13.82, -6.87], [0.28, -6.87], [0.28, 0.96], [-13.82, 0.96]], /** * Gedeckter Sitzplatz 14.4 m2: im Erdgeschoss zurueckspringende Nische in * 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 }, 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' }, ], }; /** * Nachbargebaeude als Kontext-Volumen. Haus 9 (Zollet) haengt am gleichen * Baukoerper, liegt aber 1.70 m tiefer und ist gegen Nordwesten versetzt. */ export const NEIGHBOUR_BUILDINGS = [ { id: 'haus-9', name: 'Haus 9 - Sharon und Alan Zollet', outline: [[-15.60, -13.60], [-1.20, -13.60], [-1.20, -6.87], [-15.60, -6.87]], floorLevel: -1.70, roofLevel: 4.45, }, ]; /** * Gelaendezonen. Innerhalb einer Zone wird zwischen den Hoehenkoten * interpoliert; ueber Zonengrenzen hinweg nicht - dort stehen die Stuetzmauern. */ export const TERRAIN_ZONES = [ { id: 'garten', label: 'Garten Kellenberger', polygon: [[-20.90, -6.60], [3.00, -6.60], [3.00, 5.95], [-20.90, 5.95]], fallback: -0.05, }, { id: 'zufahrt', label: 'Feuerwehrzufahrt / Schotterwiese West', polygon: [[-26.00, -9.00], [-20.90, -9.00], [-20.90, 6.50], [-26.00, 6.50]], fallback: -1.20, }, { id: 'zollet', label: 'Nachbargarten Zollet', polygon: [[-24.00, -14.50], [3.00, -14.50], [3.00, -6.60], [-24.00, -6.60]], fallback: -1.70, }, { id: 'sued', label: 'Nachbargrundstück Süd', polygon: [[-22.00, 5.95], [6.00, 5.95], [6.00, 12.00], [-22.00, 12.00]], fallback: -0.20, }, { id: 'ost', label: 'Wiese Ost', polygon: [[3.00, -6.60], [9.00, -6.60], [9.00, 5.95], [3.00, 5.95]], fallback: 0.55, }, ]; /** * Zusaetzliche Hoehenpunkte, die im Plan nicht als Kote stehen, fuer ein * plausibles Gelaende aber noetig sind (Auslauf gegen die Grundstuecksraender). */ export const EXTRA_SPOTS = [ { x: -24.5, z: -8.0, y: -2.60, zone: 'zufahrt' }, { x: -24.5, z: 0.0, y: -1.60, zone: 'zufahrt' }, { x: -24.5, z: 5.0, y: -0.60, zone: 'zufahrt' }, { x: -22.6, z: 5.5, y: -0.30, zone: 'zufahrt' }, { x: -20.0, z: -12.5, y: -1.75, zone: 'zollet' }, { x: -8.0, z: -12.5, y: -1.70, zone: 'zollet' }, { x: 2.0, z: -11.5, y: -1.65, zone: 'zollet' }, { x: -18.0, z: 9.0, y: -0.40, zone: 'sued' }, { x: -6.0, z: 9.0, y: 0.10, zone: 'sued' }, { x: 4.0, z: 9.0, y: 0.60, zone: 'sued' }, { x: 7.5, z: -5.0, y: 0.10, zone: 'ost' }, { x: 7.5, z: 0.0, y: 0.45, zone: 'ost' }, { x: 7.5, z: 5.0, y: 0.80, zone: 'ost' }, ]; /** Startposition und Blickrichtung beim Betreten der Szene. yaw = Grad ab Nord. */ export const START_VIEWS = [ { id: 'sitzplatz', label: 'Hauptsitzplatz', x: -18.6, z: -2.6, yaw: 135, note: 'Travertinplatten 80x80x3 cm, Blick über den Sitzplatz gegen den Rasen' }, { id: 'gedeckt', label: 'Gedeckter Sitzplatz', x: -11.0, z: -1.2, yaw: 215, note: 'Keramikplatten unter dem Obergeschoss, hinter der Lamellenwand' }, { id: 'rasen', label: 'Rasen Süd', x: -13.0, z: 2.8, yaw: 75, note: 'Blick der Südfassade entlang zum Spielbereich' }, { id: 'grill', label: 'Flammengrill', x: -7.8, z: 2.6, yaw: 110, note: 'Dekorkiesfeld mit Flammengrill und Holzscheiterwand' }, { id: 'spielplatz', label: 'Spielbereich', x: -3.4, z: 1.4, yaw: 150, note: 'Spielsand, Spielhaus und Apfelbaum' }, { id: 'eingang', label: 'Hauseingang', x: 1.3, z: -1.8, yaw: 250, note: 'Keramikplatten beim Fixpunkt 0.00' }, ]; /** Standort fuer den Sonnenstand: Abtwil SG. */ export const SITE_LOCATION = { name: 'Egglihaldenstrasse 9a, 9030 Abtwil SG', lat: 47.4206, lon: 9.2903, /** Peilung der Site-X-Achse gegenueber Nord, in Grad. */ northBearingOfSiteX: 61.1615, groundMasl: 651.17, };