PROCEDURE Fantasieobjekt;
CONST
pageWidth=210;
pageHeight=297;
pageFoldX1=70;
pageFoldX2=140;
randabstand=15;
abstand=5;
objectWidth=32;
klappeWidth=22;
gegenobjectWidth=12.4;
nObjects=4;
nGegenobjects=4;
nKlappen=4;
VAR
objectX1,objectX2,objectX3,objectY1,objectY2:REAL;
klappeX1,klappeX2,klappeX3,klappeY1,klappeY2:REAL;
gegenobjectX1,gegenobjectX2,gegenobjectX3,gegenobjectY1,gegenobjectY2:REAL;
firstobjectDepth,firstobjectHeight,lastobjectDepth,lastobjectHeight:REAL;
gegenobjectDepth,gegenobjectHeight:REAL;
heightdifference,depthdifference:REAL;
i:INTEGER;
BEGIN
{*werte in variablen speichern*}
firstobjectHeight:=60;
lastobjectHeight:=15;
firstobjectDepth:=50;
lastobjectDepth:=20;
{*max höhe für firtsobjects berechnen*}
IF (firstobjectHeight>60) THEN BEGIN
firstobjectHeight:=60;
END;
{*min höhe für firtsobjects berechnen*}
IF (firstobjectHeight<15) THEN BEGIN
firstobjectHeight:=15;
END;
{*max tiefe für firtsobjects berechnen*}
IF (firstobjectDepth>50) THEN BEGIN
firstobjectDepth:=50;
END;
{*min tiefe für firtsobjects berechnen*}
IF (firstobjectDepth<20) THEN BEGIN
firstobjectDepth:=20;
END;
{*max höhe für lastobjects berechnen*}
IF (lastobjectHeight>60) THEN BEGIN
lastobjectHeight:=60;
END;
{*min höhe für lastobjects berechnen*}
IF (lastobjectHeight<15) THEN BEGIN
lastobjectHeight:=15;
END;
{*max tiefe für lastobjects berechnen*}
IF (lastobjectDepth>50) THEN BEGIN
lastobjectDepth:=50;
END;
{*min tiefe für lastobjects berechnen*}
IF (lastobjectDepth<20) THEN BEGIN
lastobjectDepth:=20;
END;
{*höhendifferenz der objects berechnen*}
heightdifference:=(lastobjectHeight-firstobjectHeight)/nObjects;
{*tiefendifferenz der objects berechnen*}
depthdifference:=(lastobjectDepth-firstobjectDepth)/nObjects;
{*din a4 blatt zeichnen*}
penFore(0,0,65535);
moveto(0,0);
lineto(pageWidth,0);
lineto(pageWidth,pageHeight);
lineto(0,pageHeight);
lineto(0,0);
{*zum ersten papierfaltpunkt bewegen*}
moveto(pageFoldX2,0);
{*in dieser Schleife werden die objects gezeichnet*}
FOR i:=0 TO nObjects DO BEGIN
{*Stift einstellen*}
penfore(0,0,65535);
{*xWerte des objects berechnen*}
objectX1:=pageFoldX2-firstobjectDepth-i*depthdifference;
objectX2:=objectX1+firstobjectHeight+i*heightdifference;
objectX3:=objectX2+firstobjectDepth+i*depthdifference;
{*yWerte für die Linien berechnen*}
objectY1:=randabstand+i*(objectWidth+gegenobjectWidth+abstand*2);
objectY2:=objectY1+objectWidth;
{*papier faltkanten zeichnen*}
penFore(65535,0,0);
lineto(pageFoldX2,objectY1);
{*schnittkanten zeichnen*}
penFore(0,0,65535);
moveto(objectX1,objectY1);
lineto(objectX3,objectY1);
moveto(objectX1,objectY2);
lineto(objectX3,objectY2);
{*volumen faltkanten zeichnen*}
penFore(65535,0,0);
moveto(objectX1,objectY1);
lineto(objectX1,objectY2);
moveto(objectX2,objectY1);
lineto(objectX2,objectY2);
moveto(objectX3,objectY1);
lineto(objectX3,objectY2);
{*xWerte der klappen berechnen*}
klappeX1:=objectX1+abstand;
klappeX2:=objectX2-abstand;
klappeX3:=objectX2;
{*yWerte für die klappen berechnen*}
klappeY1:=objectY1+abstand;
klappeY2:=objectY2-abstand;
{*schnittkanten zeichnen*}
penFore(0,0,65535);
moveto(klappeX1, klappeY1);
lineto(klappeX3, klappeY1);
moveto(klappeX1, klappeY2);
lineto(klappeX3, klappeY2);
moveto(klappeX3, klappeY1);
lineto(klappeX3, klappeY2);
{*volumen faltkanten zeichnen*}
penfore(65535,0,0);
moveto(klappeX1,klappey1);
lineto(klappeX1,klappey2);
moveto(klappeX2,klappey1);
lineto(klappeX2,klappey2);
{*zum nächsten papierfaltpunkt bewegen*}
moveto(pageFoldX2,objectY2);
END;
{*letzten papierfaltpunkt zeichen*}
lineto(pageFoldX2,pageHeight);
{*zum zweiten papierfaltpunkt bewegen*}
moveto(pageFoldX1,0);
{*in dieser Schleife werden die gegenobjects gezeichnet*}
FOR i:=0 TO nGegenobjects DO BEGIN
{*höhe der gegenobjects berechnen*}
gegenobjectHeight:=firstobjectHeight+(i+0.5)*heightdifference;
{*xWerte des gegenobjects berechnen*}
gegenobjectX3:=pageFoldX2-firstobjectDepth-i*depthdifference+10;
IF depthdifference<0 THEN BEGIN
gegenobjectX3:=pageFoldX2-firstobjectDepth-(i+1)*depthdifference+10;
END;
gegenobjectX2:=gegenobjectX3-gegenobjectHeight;
gegenobjectX1:=gegenobjectX2-(gegenobjectX3-pagefoldx1);
{*yWerte für die Linien berechnen*}
gegenobjectY1:=randabstand+objectWidth+abstand+i*(gegenobjectWidth+objectWidth+2*abstand);
gegenobjectY2:=gegenobjectY1+gegenobjectWidth;
{*papier faltkanten zeichnen*}
penFore(65535,0,0);
lineto(pageFoldX1,gegenobjectY1);
{*schnittkanten zeichnen*}
penFore(0,0,65535);
moveto(gegenobjectX1,gegenobjectY1);
lineto(gegenobjectX3,gegenobjectY1);
moveto(gegenobjectX1,gegenobjectY2);
lineto(gegenobjectX3,gegenobjectY2);
{*volumen faltkanten zeichnen*}
penFore(65535,0,0);
moveto(gegenobjectX1,gegenobjectY1);
lineto(gegenobjectX1,gegenobjectY2);
moveto(gegenobjectX2,gegenobjectY1);
lineto(gegenobjectX2,gegenobjectY2);
moveto(gegenobjectX3,gegenobjectY1);
lineto(gegenobjectX3,gegenobjectY2);
{*zum nächsten papierfaltpunkt bewegen*}
moveto(pageFoldX1,gegenobjectY2);
END;
{*letzten papierfaltpunkt zeichen*}
lineto(pageFoldX1,pageHeight);
END;
RUN (Fantasieobjekt);
This website has been archived and is no longer maintained.