{*Idee: Wir versuchten im Vectorscript die Geometrie und Struktur eines Gebietes aus der Strassenperspektive zu programmieren. In unserem Versuch bilden wir ein Intervall von 3 Gebäudeebenen ab. Die Parameter beeinflussen sich gegeneinander, wobei geringere Gebäudehöhen zu einem Strukturabbild von z.b. Suburbia (Vorstadt, Dorf) führen, und hohe Gebäudehöhen eine Grossstadtskyline entstehen lassen. Wir teilen die Zone zwischen kleinster und grösster Gebäudehöhe in 3 Kategorien ein, welche man sich beim Eintippen in das Plugin erstellen lassen kann: Suburbia (kleine Häuser, schmale Strasse, grösserer Strassenraum) City (breitere und höhere Häuser, bereits erste Setbacks (Rücksprünge) in den Häusern) Megalopolis (Skyline. breite und hohe Gebäude mit mehreren Setbacks, breite Strasse) Die 1. Haushöhe bestimmt alle weiteren Parameter, wie Strassenbreite, Gesamtanzahl Setbacks (Rücksprünge in den Hochhäusern, damit grosse Verschattungen verhindert werden), Gebäudebreite und die Gebäudehöhe der anderen Häuser.*} PROCEDURE Stadtprofil; VAR Hauptstrasse:REAL; X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8,Y9,Y10,Y11,Y12,Y13,Y14,Y15,Y16,Y17:REAL; X10,X11,X12,X13,X14,X15,Y18,Y19,Y20,Y21,Y22,Y23,Y24,Y25,Y26,Y27,Y28,Y29,Y30:REAL; HaushöheA,HaushöheB,HaushöheC,HaushöheD,HaushöheE,HaushöheF:REAL; HausbreiteA,HausbreiteB,HausbreiteC,HausbreiteD,HausbreiteE,HausbreiteF:REAL; HaustiefeA,HaustiefeB,HaustiefeC,HaustiefeD,HaustiefeE,HaustiefeF:REAL; SetbackB,SetbackhöheB:REAL; SetbackC,SetbackhöheC:REAL; Strassenbreite,Strassenhöhe,Trottoir:REAL; Seitenbreite:REAL; Seitenhöhe:REAL; Falthöhe:REAL; z:REAL; i:REAL; k:REAL; u:REAL; BEGIN Seitenbreite:=210; Seitenhöhe:=297; Falthöhe:=148.5; {*Gebäudehöhe, ab welcher Setbacks hinzukommen*} i:=44; k:=44; HaushöheA:=10+(Random*15); IF (HaushöheA>17.5) THEN HaushöheB:=2*HaushöheA+Random*5 ELSE HaushöheB:=1.6*HaushöheA-Random*5; IF (HaushöheB>33) THEN HaushöheC:=3.6*HaushöheA ELSE HaushöheC:=1.5*HaushöheB; IF (HaushöheC>i) THEN HausbreiteA:=45+10*Random ELSE HausbreiteA:=25+10*Random; IF (HaushöheC>i) THEN HausbreiteB:=HausbreiteA*1.2 ELSE HausbreiteB:=HausbreiteA+5+Random*10; HausbreiteC:=0.7*HausbreiteA; HaustiefeA:=35+(10*Random); HaustiefeB:=35+(10*Random); HaustiefeC:=35+(10*Random); SetbackB:=HausbreiteB/3; SetbackhöheB:=(HaushöheB-HaushöheA)/2+Random*5; SetbackC:=HausbreiteC/2; SetbackhöheC:=(HaushöheC-HaushöheB)/2+Random*15; IF (HaushöheC>i) THEN Strassenbreite:=HausbreiteA/1.5 ELSE Strassenbreite:=HausbreiteA/1.3; Strassenhöhe:=5; IF (HaushöheC>i) THEN Trottoir:=10+Random*5 ELSE Trottoir:=20+Random*5; X8:=Seitenbreite/2; X9:=X8+(Strassenbreite/2); X7:=X9-Strassenbreite; X6:=X7-Trottoir; X1:=X6-HausbreiteA; X2:=X6-HausbreiteB; X3:=X6-HausbreiteC; X4:=X6-SetbackB; X5:=X6-SetbackC; Y1:=Falthöhe-HaustiefeA-HaustiefeB-HaustiefeC; Y2:=Y1+HaushöheA; Y3:=Y2+HaustiefeA; Y4:=Y1+HaustiefeA; Y5:=Y4+HaushöheB; Y6:=Y5+HaustiefeB+HaustiefeC; Y7:=Y5-SetbackhöheB; Y8:=Y7+HaustiefeB; Y9:=Y6-HaustiefeC; Y10:=Y9+HaushöheC; Y11:=Y10+HaustiefeC; Y12:=Y10-SetbackhöheC; Y13:=Y11-SetbackhöheC; Y15:=10; Y16:=Y15+Strassenhöhe; Y17:=Falthöhe+Strassenhöhe; {*Schnittkanten*} penFore(0,0,65535); {*Gebäudeebenen links*} moveto(0,0); lineto(Seitenbreite,0); lineto(Seitenbreite,Seitenhöhe); lineto(0,Seitenhöhe); lineto(0,0); moveto(X6,Y1); IF (HaushöheC>i) THEN lineto(X6,Y13) ELSE lineto(X6,Y11); moveto(X1,Y1); lineto(X1,Y3); moveto(X2,Y4); lineto(X2,Y6); moveto(X3,Y9); lineto(X3,Y11); moveto(X4,Y7); IF (HaushöheB>k) THEN lineto(X4,Y9); moveto(X5,Y12); IF (HaushöheC>i) THEN lineto(X5,Y11); {*Strasse*} moveto(X7,Y15); lineto(X7,Y17); moveto(X9,Y15); lineto(X9,Y17); z:=Random*10-Random*10; u:=Random*15-Random*15; HaustiefeD:=35+(10*Random); HaustiefeE:=35+(10*Random); HaustiefeF:=35+(10*Random); HaushöheD:=HaushöheA+z; HaushöheE:=HaushöheB+z; HaushöheF:=HaushöheC+u; HausbreiteD:=HausbreiteA+z; HausbreiteE:=HausbreiteB+z; HausbreiteF:=HausbreiteC+z; X10:=X9+Trottoir; X11:=X10+HausbreiteD; X12:=X10+HausbreiteE; X13:=X10+HausbreiteF; X14:=X10+SetbackB; X15:=X10+SetbackC; Y18:=Falthöhe-HaustiefeA-HaustiefeB-HaustiefeC; Y19:=Y18+HaushöheD; Y20:=Y19+HaustiefeA; Y21:=Y18+HaustiefeA; Y22:=Y21+HaushöheE; Y23:=Y22+HaustiefeB+HaustiefeC; Y24:=Y22-SetbackhöheB+z; Y25:=Y24+HaustiefeB; Y26:=Y23-HaustiefeC; Y27:=Y26+HaushöheF; Y28:=Y27+HaustiefeC; Y29:=Y27-SetbackhöheC; Y30:=Y28-SetbackhöheC; {*Faltkanten*} penFore(65535,0,0); penPat(-2); {*Gebäudeebenen links*} moveto(X1,Y1); lineto(X6,Y1); moveto(X1,Y2); lineto(X6,Y2); moveto(X1,Y3); lineto(X6,Y3); moveto(X2,Y4); lineto(X1,Y4); moveto(X2,Y5); IF (HaushöheB>k) THEN lineto(X4,Y5) ELSE lineto(X6,Y5); moveto(X4,Y7); IF (HaushöheB>k) THEN lineto(X6,Y7); moveto(X4,Y8); IF (HaushöheB>k) THEN lineto(X6,Y8); moveto(X3,Y9); IF (HaushöheB>k) THEN lineto(X4,Y9) ELSE lineto(X6,Y9); moveto(X2,Y6); lineto(X3,Y6); moveto(X5,Y12); IF (HaushöheC>i) THEN lineto(X6,Y12); moveto(X5,Y13); IF (HaushöheC>i) THEN lineto(X6,Y13); moveto(X3,Y10); IF (HaushöheC>i) THEN lineto(X5,Y10) ELSE lineto(X6,Y10); moveto(X3,Y11); IF (HaushöheC>i) THEN lineto(X5,Y11) ELSE lineto(X6,Y11); {*Strasse*} moveto(X7,Y15); lineto(X9,Y15); moveto(X7,Y16); lineto(X9,Y16); moveto(X7,Y17); lineto(X9,Y17); {*Gebäudeebenen rechts*} u:=Random*15-Random*15; z:=Random*10-Random*10; HaustiefeD:=35+(10*Random); HaustiefeE:=35+(10*Random); HaustiefeF:=35+(10*Random); HaushöheD:=HaushöheA+z; HaushöheE:=HaushöheB+z; HaushöheF:=HaushöheC+u; HausbreiteD:=HausbreiteA+z; HausbreiteE:=HausbreiteB+z; HausbreiteF:=HausbreiteC+z; X10:=X9+Trottoir; X11:=X10+HausbreiteD; X12:=X10+HausbreiteE; X13:=X10+HausbreiteF; X14:=X10+SetbackB; X15:=X10+SetbackC; Y18:=Falthöhe-HaustiefeD-HaustiefeE-HaustiefeF; Y19:=Y18+HaushöheD; Y20:=Y19+HaustiefeD; Y21:=Y18+HaustiefeD; Y22:=Y21+HaushöheE; Y23:=Y22+HaustiefeE+HaustiefeF; Y24:=Y22-SetbackhöheB+z; Y25:=Y24+HaustiefeE; Y26:=Y23-HaustiefeF; Y27:=Y26+HaushöheF; Y28:=Y27+HaustiefeF; Y29:=Y27-SetbackhöheC; Y30:=Y28-SetbackhöheC; {*Schnittkanten*} penFore(0,0,65535); moveto(X10,Y18); IF (HaushöheF>i) THEN lineto(X10,Y30) ELSE lineto(X10,Y28); moveto(X11,Y18); lineto(X11,Y20); moveto(X12,Y21); lineto(X12,Y23); moveto(X13,Y26); lineto(X13,Y28); moveto(X14,Y24); IF (HaushöheE>k) THEN lineto(X14,Y26); moveto(X15,Y29); IF (HaushöheF>i) THEN lineto(X15,Y28); {*Faltkanten*} penFore(65535,0,0); penPat(-2); moveto(X10,Y18); lineto(X11,Y18); moveto(X10,Y19); lineto(X11,Y19); moveto(X10,Y20); lineto(X11,Y20); moveto(X11,Y21); lineto(X12,Y21); moveto(X10,Y24); IF (HaushöheE>k) THEN lineto(X14,Y24); moveto(X12,Y22); IF (HaushöheE>k) THEN lineto(X14,Y22) ELSE lineto(X10,Y22); moveto(X10,Y25); IF (HaushöheE>k) THEN lineto(X14,Y25); moveto(X13,Y26); IF (HaushöheE>k) THEN lineto(X14,Y26) ELSE lineto(X10,Y26); moveto(X12,Y23); lineto(X13,Y23); moveto(X10,Y29); IF (HaushöheF>i) THEN lineto(X15,Y29); moveto(X10,Y30); IF (HaushöheF>i) THEN lineto(X15,Y30); moveto(X13,Y27); IF (HaushöheF>i) THEN lineto(X15,Y27) ELSE lineto(X10,Y27); moveto(X13,Y28); IF (HaushöheF>i) THEN lineto(X15,Y28) ELSE lineto(X10,Y28); penFore(65535,0,0); penPat(-2); moveto(0,Falthöhe); lineto(X2,Falthöhe); moveto(X6,Falthöhe); lineto(X7,Falthöhe); moveto(X9,Falthöhe); lineto(X10,Falthöhe); moveto(X12,Falthöhe); lineto(Seitenbreite,Falthöhe); END; RUN(Stadtprofil);