PROCEDURE Lampe; VAR {twoLines:} px,py,px2 : REAL; k : INTEGER; {ARC:} x,y,radius,startAngle,sweepAngle : REAL; i : INTEGER; {CIRCLE:} radiusC,startAngleC,sweepAngleC : REAL; l : INTEGER; {LASCHEN:} lx,ly : REAL; m : INTEGER; BEGIN py:= IntDialog('Wie hoch soll die Lampe werden (in cm, mindestens 4!)?','20'); px:= IntDialog('Wie breit soll die Lampe werden (in cm!)?','15'); PenFore(65535,0,0); FOR k:= 1 TO 3 DO BEGIN MoveTo(px + k*px,0); LineTo(px + k*px,py); END; PenFore(0,0,0); MoveTo(px + 0*px,0); LineTo(px + 0*px,py); MoveTo(px + 4*px,0); LineTo(px + 4*px,py); x:= px; y:= py; radius:= px; startAngle:= 0; sweepAngle:= 60; {Arc oben:} FOR i:= 1 TO 4 DO BEGIN ArcByCenter(i * x,y,radius,startAngle,sweepAngle); END; FOR i:= 2 TO 5 DO BEGIN ArcByCenter(i * x,y,radius,startAngle + 180,sweepAngle * -1); END; {Arc unten:} FOR i:= 1 TO 4 DO BEGIN ArcByCenter(i * x,0,radius,startAngle,sweepAngle * -1); END; FOR i:= 2 TO 4 DO BEGIN ArcByCenter(i * x,0,radius,startAngle + 180,sweepAngle); END; {Arc innen oben:} PenFore(65535,0,0); FOR i:= 0 TO 3 DO BEGIN ArcByCenter(i * x + x/2 + x,py + px/2 * sqrt(3) {wurzel aus 3},radius,startAngle - 120,sweepAngle); END; {Arc innen unten:} FOR i:= 0 TO 3 DO BEGIN ArcByCenter(i * x + x/2 + x,- px/2 * sqrt(3) {wurzel aus 3},radius,startAngle + 120,sweepAngle *-1); END; radiusC:= IntDialog('Wie gross ist der Radius des Gewindes (in cm!)?','2'); startAngleC:= 0; sweepAngleC:= 360; PenFore(0,0,0); {Circles oben:} FOR l:= 0 TO 3 DO BEGIN ArcByCenter(l * x + x/2 + x ,py + sqrt(3){wurzelAus3}*(px/2-px/3),1,startAngleC,sweepAngleC); END; {Circles unten:} FOR l:= 0 TO 2 DO BEGIN ArcByCenter(l * x + x/2 + x ,- sqrt(3){wurzelAus3}*(px/2-px/3),radiusC,startAngleC,sweepAngleC); END; {AusnahmeCircle:} FOR l:= 3 TO 3 DO BEGIN ArcByCenter(l * x + x/2 + x ,- sqrt(3){wurzelAus3}*(px/2-px/3),radiusC,-60,180); END; {LetzteEinführung:} MoveTo(4 * px,0); LineTo(4 * x + x/2 - radiusC * 0.5, - sqrt(3){wurzelAus3}*(px/2-px/3) + radiusC * sin(Deg2Rad (60)) {sin60}); MoveTo(4 * px + px/2,- px/2*sqrt(3){wurzelAus3}); LineTo(4 * x + x/2 + radiusC * 0.5, - sqrt(3){wurzelAus3}*(px/2-px/3) - radiusC * sin(Deg2Rad (60)) {sin60}); END; RUN(Lampe);