PROCEDURE faltkarte; VAR Falt,Faltwinkel, Breite, Höhe, Tiefe, Position, xOffset, Alpha, Beta, Gamma, Delta,picolo,Omega,Epsylon : REAL; XX, YY : ARRAY [1..10] of REAL; m : ARRAY [1..10] of REAL; nVolumes,i:INTEGER; BEGIN { vorige linien löschen} DeleteObjs; { STIFT } penPat(2); penFore(0,0,65535); { BLATT } moveto(0,0); lineto(210,0); lineto(210,297); lineto(0,297); lineto(0,0); { WERTE } Falt := 148.5; Breite := PBreite; Höhe := Phöhe; Tiefe := Ptiefe; xOffset := PxOffset; Position := (210-(breite+xoffset))/2; nVolumes := PnVolumes; Alpha := PAlpha / 180 * PI; Picolo:=1; XX[1] := 0; XX[2] := 210; { SCHLEIFE } FOR i:=0 TO nVolumes-1 DO BEGIN { WINKEL } Beta := ArcTan ( Höhe * Sin(Alpha) / ( Cos(Alpha) * Tiefe + Sin(Alpha) * xOffset ) ); Gamma := ArcTan ( xOffset / ( Höhe + Tiefe ) ); Delta := Beta - Alpha; { PUNKTE} YY[1] := Falt; YY[2] := Falt -( XX[2]-XX[1]) * Tan(Faltwinkel); XX[3] := xx[1]+(Position + Tan(Gamma) * Tiefe) * Cos(Faltwinkel); YY[3] := Falt - (Position + Tan(Gamma) * Tiefe) * Sin(Faltwinkel); XX[4] := xx[1]+(Position + Tan(Gamma) * Tiefe + Breite) * Cos(Faltwinkel); YY[4] := Falt - (Position + Tan(Gamma) * Tiefe + Breite) * Sin(Faltwinkel); XX[5] := xx[1]+(Position) * Cos(Faltwinkel) - (Tiefe) * Sin(Faltwinkel); YY[5] := Falt - (Position) * Sin(Faltwinkel) - Tiefe * Cos(Faltwinkel); XX[6] := xx[1]+( Position + Breite - Tan(Gamma) * Sin(Alpha) * Cos(Gamma) * Breite / Cos(Alpha - Gamma) ) * Cos(Faltwinkel) - ( Tiefe + Sin(Alpha) * Cos(Gamma) * Breite / Cos(Alpha - Gamma) ) * Sin(Faltwinkel); YY[6] := Falt - (Position + Breite) * Sin(Faltwinkel) - ( Tiefe + Sin(Alpha) * Cos(Gamma) * Breite / Cos(Alpha - Gamma) ) * Cos(Faltwinkel) + ( Tan(Gamma) * Sin(Alpha) * Cos(Gamma) * Breite / Cos(Alpha - Gamma) ) * Sin(Faltwinkel); XX[7] := xx[1]+(Position + xOffset) * Cos(Faltwinkel) + Höhe * Sin(Faltwinkel); YY[7] := Falt - Position * Sin(Faltwinkel) + Höhe * Cos(Faltwinkel) - xOffset * Sin(Faltwinkel); XX[8] := xx[1]+( Position + Breite + xOffset + Sin(Beta) * Sin(Gamma) * Breite / Cos(Beta + Gamma) ) * Cos(Faltwinkel) + ( Höhe + Sin(Beta) * Cos(Gamma) * Breite / Cos(Beta + Gamma) ) * Sin(Faltwinkel); YY[8] := Falt - (Position+Breite) * Sin(Faltwinkel) + ( Höhe + Sin(Beta) * Cos(Gamma) * Breite / Cos(Beta + Gamma) ) * Cos(Faltwinkel) - xOffset * Sin(Faltwinkel) - ( Sin(Beta) * Sin(Gamma) * Breite / Cos(Beta + Gamma) ) * Sin(Faltwinkel); IF Alpha = 0 THEN BEGIN XX[9] := XX[3] + (Höhe - Tiefe) * Sin(Faltwinkel); YY[9] := YY[3] + (Höhe - Tiefe) * Cos(Faltwinkel) ; XX[10] := XX[4] + (Höhe - Tiefe) * Sin(Faltwinkel); YY[10] := YY[4] + (Höhe - Tiefe) * Cos(Faltwinkel); END ELSE BEGIN XX[9] := XX[3] + ( Sin(Delta) * Sin(Gamma) * ( Tiefe / Tan(Alpha) + Tan(Gamma) * Tiefe) / Cos(Delta + Gamma) ) * Cos(Faltwinkel) + ( Sin(Delta) * Cos(Gamma) * ( Tiefe / Tan(Alpha) + Tan(Gamma) * Tiefe) / Cos(Delta + Gamma) ) * Sin(Faltwinkel); YY[9] := YY[3] - ( Sin(Delta) * Sin(Gamma) * ( Tiefe / Tan(Alpha) + Tan(Gamma) * Tiefe) / Cos(Delta + Gamma) ) * Sin(Faltwinkel) + ( Sin(Delta) * Cos(Gamma) * ( Tiefe / Tan(Alpha) + Tan(Gamma) * Tiefe) / Cos(Delta + Gamma) ) * Cos(Faltwinkel); XX[10] := XX[4] + ( Sin(Delta) * Sin(Gamma) * ( Tiefe / Tan(Alpha) + Tan(Gamma) * Tiefe + Breite ) / Cos(Delta + Gamma) ) * Cos(Faltwinkel) + ( Sin(Delta) * Cos(Gamma) * ( Tiefe / Tan(Alpha) + Tan(Gamma) * Tiefe + Breite ) / Cos(Delta + Gamma) ) * Sin(Faltwinkel); YY[10] := YY[4] - ( Sin(Delta) * Sin(Gamma) * ( Tiefe / Tan(Alpha) + Tan(Gamma) * Tiefe + Breite ) / Cos(Delta + Gamma) ) * Sin(Faltwinkel) + ( Sin(Delta) * Cos(Gamma) * ( Tiefe / Tan(Alpha) + Tan(Gamma) * Tiefe + Breite ) / Cos(Delta + Gamma) ) * Cos(Faltwinkel); END; { SCHNITT } { STIFT } penPat(2); penFore(0,0,65535); moveto(XX[5],YY[5]); lineto(XX[7],YY[7]); moveto(XX[6],YY[6]); lineto(XX[8],YY[8]); { STIFT } penFore(65535,0,0); penPat(-2); { FALT } moveto(XX[1], YY[1]); lineto(XX[3], YY[3]); moveto(XX[4], YY[4]); lineto(XX[2], YY[2]); {moveto(XX[5],YY[5]); lineto(XX[6],YY[6]);} moveto(XX[7],YY[7]); lineto(XX[8],YY[8]); moveto(XX[9],YY[9]); lineto(XX[10],YY[10]); { STIFT } penPat(2); {neue werte für schleife} Omega := ArcTAN ( COS(Gamma) * ( (yy[8]-YY[4])^2 + (xx[8]-xx[4])^2 )^(1/2) / ( Breite + SIN(Gamma) * ( (yy[8]-YY[4])^2 + (xx[8]-xx[4])^2 )^(1/2) ) ); Picolo := COS(Alpha) - SIN(Alpha)*TAN(omega + Gamma); Breite :=Breite*picolo; Höhe :=Höhe*picolo; Tiefe := Tiefe*picolo; xOffset:= xOffset*picolo; Faltwinkel :=Alpha*(i+1); Falt :=YY[5]; Position :=((XX[6]-XX[5])/cos(alpha*(1+i))-Breite)/8; XX[2] := XX[6]; XX[1] := XX[5]; Alpha:=(alpha+i*0.0001); END; penFore(65535,0,0); penPat(-2); moveto(XX[5],YY[5]); lineto(XX[6],YY[6]); END; RUN(faltkarte);