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.