-
Notifications
You must be signed in to change notification settings - Fork 1
/
ellipse_out.txt
54 lines (54 loc) · 1.71 KB
/
ellipse_out.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
10MODE 1
20PROCellipse(160,128,58,100,20)
30END
40
50DEFPROCellipse(CX%,CY%,A%,B%,S%)
60VDU 29,CX%*4;CY%*4;
70AA%=A%*A%
80BB%=B%*B%
90YYAA%=0:AABB%=AA%*BB%
100YYAA_DIFF%=AA%
110X1%=-A%:T1%=-A%*B%:TT1%=AABB%:BT1%=B%*T1%:ST1%=S%*T1%
120X2%= A%:T2%= A%*B%:TT2%=AABB%:BT2%=-BT1% :ST2%=-ST1%
130YS%=0:BB2%=BB%/2:SB%=S%*B%:SS%=S%*S%
140
150FOR Y%=0 TO B%-1
160OX1%=X1%:OX2%=X2%
170DD%=AABB%-YYAA%
180
190IF T2%<0 X2%=X2%+1:T2%=T2%+B%:TT2%=TT2%+2*BT2%+BB%:BT2%=BT2%+BB%:ST2%=ST2%+SB%:GOTO 190
200IF T2%=0 GOTO 260
210D1%=TT2%-DD%
220BD%=BT2%+BB2%
230IF BD%-D1% < 0 X2%=X2%-1:T2%=T2%-B%:TT2%=TT2%-2*BT2%+BB%:BT2%=BT2%-BB%:ST2%=ST2%-SB%:GOTO 190
240IF BD%+D1% < 0 X2%=X2%+1:T2%=T2%+B%:TT2%=TT2%+2*BT2%+BB%:BT2%=BT2%+BB%:ST2%=ST2%+SB%:GOTO 190
250
260DX%=SGN(X2%-OX2%)
270PROCdrawreflected(OX2%+DX%,Y%,X2%,Y%)
280
290IF T1%>0 X1%=X1%-1:T1%=T1%-B%:TT1%=TT1%-2*BT1%+BB%:BT1%=BT1%-BB%:ST1%=ST1%-SB%:GOTO 290
300IF T1%=0 GOTO 360
310D1%=TT1%-DD%
320BD%=BB2%-BT1%
330IF BD%-D1% < 0 X1%=X1%+1:T1%=T1%+B%:TT1%=TT1%+2*BT1%+BB%:BT1%=BT1%+BB%:ST1%=ST1%+SB%:GOTO 290
340IF BD%+D1% < 0 X1%=X1%-1:T1%=T1%-B%:TT1%=TT1%-2*BT1%+BB%:BT1%=BT1%-BB%:ST1%=ST1%-SB%:GOTO 290
350
360DX%=SGN(X1%-OX1%)
370PROCdrawreflected(OX1%+DX%,Y%,X1%,Y%)
380
390TT2%=TT2%-2*ST2%+SS%:TT1%=TT1%-2*ST1%+SS%:YS%=YS%+S%:ST2%=ST2%-SS%:ST1%=ST1%-SS%
400YYAA%=YYAA%+YYAA_DIFF%
410YYAA_DIFF%=YYAA_DIFF%+2*AA%
420BT2%=BT2%-SB%:BT1%=BT1%-SB%:T2%=T2%-S%:T1%=T1%-S%
430NEXT
440
450DX%=SGN(X2%-X1%):OX1%=X1%:X1%=X2%-DX%
460PROCdrawreflected(OX1%+DX%,Y%,X1%,Y%)
470ENDPROC
480
490DEFPROCdrawreflected(MX%,MY%,DRX%,DRY%)
500IF MX%=DRX%:IFMY%=DRY% GCOL0,1:PLOT69,DRX%*4,DRY%*4:PLOT69,-DRX%*4,-DRY%*4:ENDPROC
510GCOL0,3
520MOVE MX%*4, MY%*4:DRAW DRX%*4, DRY%*4
530MOVE -MX%*4,-MY%*4:DRAW -DRX%*4,-DRY%*4
540ENDPROC