Procedure oval1; VAR EstartPunkt1,EendPunkt1,startPunkt1,endPunkt1,int1,int2 : POINT; p1X,p1Y,p2X,p2Y,pX,pY : REAL; i,n,r : INTEGER; myHandle, myLayer,h : HANDLE; legal1,legal2 : BOOLEAN; BEGIN; FOR i:=1 TO 1 DO BEGIN n := Random * 4; FillBack(0,0,0); PenFore(0,1,1); EstartPunkt1.x := 0; EstartPunkt1.x := EstartPunkt1.y; EendPunkt1.y := 100; EendPunkt1.x := 0.25 * EendPunkt1.y + n; wait(0.4); redraw; sysBeep; p1X := EstartPunkt1.x; p1Y := EstartPunkt1.y; p2X := EendPunkt1.x; p2Y := EendPunkt1.y; Oval(p1X,p1Y,p2X,p2Y); myLayer := ActLayer; myHandle := FSActLayer; HCenter(myHandle,pX,pY); HMove(myHandle,-1 * pX,-1 * pY); Locus(0,0); sysBeep; DSelectAll; startPunkt1.x := 0; startPunkt1.y := 0; endPunkt1.x := 0; endPunkt1.y := 50; DSelectAll; moveTo(startPunkt1.x,startPunkt1.y); LineTo(endPunkt1.x,endPunkt1.y); FOR r:=1 TO 11 DO BEGIN Duplicate(0,0); RotatePoint(0,0,r * 1.25); LineEllipseIntersect(startPunkt1,endPunkt1,EendPunkt1,EstartPunkt1,int1,legal1,int2,legal2); Locus(int1.x,int1.y); END; DSelectAll; moveTo(startPunkt1.x,startPunkt1.y); LineTo(endPunkt1.x,endPunkt1.y * -1); FOR r:=1 TO 11 DO BEGIN Duplicate(0,0); RotatePoint(0,0,r * -1.25); END; SelectAll; LineEllipseIntersect(startPunkt1,endPunkt1,EendPunkt1,EstartPunkt1,int1,legal1,int2,legal2); {LineEllipseIntersect(a1, a2: POINT; upperRight, lowerLeft: POINT; VAR int1: POINT; VAR legal1: BOOLEAN; VAR int2: POINT; VAR legal2: BOOLEAN);} Locus(int1.x,int1.y); END; END; RUN(oval1);