-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path5-1.bas
48 lines (48 loc) · 1.44 KB
/
5-1.bas
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
25000 'Exercise 5-1: Three surfaces of revol**
25010 'Indices (1) simple harmonic motion
25011 '(2) paraboloid
25012 '(3) concave up hemisphere
25020 SCREEN 1: COLOR 0,2: KEY OFF: CLS
25030 DT = .04: G=1: D=1
25040 K=1: K2=K^2: C=K2/2: A=K2/G
25050 MU = 0.2
25055 GOSUB 25500: GOSUB 25600
25060 FOR I=1 TO 3: R(I)=0.5: NEXT
25070 FOR I=1 TO 3: RD(I)=0: NEXT
25090 RDD(1)=MU^2/(R(1)^3)-K^2*R(1)
25091 AAA=(1+(2*C*R(2))^2)
25092 CCC=MU^2/(R(2)^3)
25093 BBB=-2*G*R(2)-R(2)*(2*C*RD(2))^2
25100 RDD(2)=(BBB+CCC)/AAA
25105 AA=-G*R(3)/(SQR(A^2-R(3)^2))
25106 CC=-RD(3)^2*(A^2*R(3)/((A^2-R(3)^2)^2))
25107 DD=1+R(3)^2/(A^2*R(3)^2)
25108 BB=MU^2/(R(3)^3)
25110 RDD(3)=(AA+BB+CC)/DD
25140 FOR I=1 TO 3: RD(I)=RDD(I)*DT+RD(I)
25141 R(I)=RD(I)*DT+R(I): NEXT
25150 FOR I=1 TO 3: PD(I)=MU/(R(I)^2)
25151 P(I)=PD(I)*DT+P(I): NEXT
25160 FOR I=1 TO 3: X(I)=R(I)*COS(P(I))
25161 Y(I)=R(I)*SIN(P(I)): NEXT
25170 FOR I=1 TO 3
25171 PSET (50*X(I)+70+80*(I-1),60-50*Y(I)),I
25172 NEXT
25180 GOTO 25090
25500 FOR I=0 TO 2: CIRCLE(70+80*I,60),30,1
25501 NEXT
25505 LOCATE 23,5
25506 PRINT " plane parabol sphere";
25507 LOCATE 1,6
25508 PRINT "Three surfaces of revolution ";
25510 RETURN
25600 FOR I=-0.7 to 0.7 STEP 0.02:'side view
25610 L(1)=50*I+70+80*0: M(1)=170
25620 L(2)=50*I+70+80*1: M(2)=170-50*C*I^2
25625 IF (A^2-I^2)=<0 THEN GOTO 25700
25630 L(3)=50*I+70+80*2
25631 M(3)=170-50*(A-SQR(A^2-I^2))
25700 PSET(L(1),M(1)),1
25701 PSET(L(2),M(2)),1: PSET (L(3),M(3)),1
25725 NEXT
25750 RETURN