CLS : SCREEN 12: pi = 3.1415925#
cim$(1) = "j kitrts"
cim$(2) = "j elengeds"
cim$(3) = "tovbb"
PRINT "Problma: adott (0<a<=90 ) szggel kitrtett hintrl (kifel) lengs kzben"
PRINT "   egy 0<b<=a kitrsnl elengedem magam. Hol rek fldet?"
PRINT "Modell: a hinta lelg a fldig. A lgellenllst elhanyagoljuk."
PRINT "Beadand: a, b (fokokban), l (meterben)."
LOCATE 6, 20: PRINT "Mehet? (enter)"
dd: d$ = INKEY$: IF d$ <> CHR$(13) THEN GOTO dd
CLS : SCREEN 12
i1: LOCATE 1, 1: INPUT "l<=10 m"; l
IF l <= .05 OR l > 10 THEN BEEP: GOTO i1
l = l * 18
i2: LOCATE 1, 21: PRINT "               ": LOCATE 1, 21: INPUT "a"; a
IF a <= 0 OR a > 90 THEN BEEP: GOTO i2
i3: LOCATE 1, 41: PRINT "               ": LOCATE 1, 41: INPUT "b"; b
IF b <= 0 OR b > a THEN BEEP: GOTO i3
pi = 3.14159: t = .01
a1 = -a * pi / 180
a2 = a1
b = b * pi / 180
vx = 0: vy = 0
LINE (1, 1)-(1, 451)
LINE (1, 451)-(620, 451)
LINE (l, 450 - l)-(l, 451)
CIRCLE (l, 450 - l), 5
x = l * (1 + SIN(a1))
y = l * (1 - COS(a1))
LINE (l, 450 - l)-(x, 450 - y)
kiir: PSET (x, 450 - y), 11
ak = (vx ^ 2 + vy ^ 2) / l + 100 * COS(a1)
ax = -ak * SIN(a1)
ay = -100 + ak * COS(a1)
x = x + vx * t + ax / 2 * t ^ 2
y = y + vy * t + ay / 2 * t ^ 2
vx = vx + ax * t
vy = vy + ay * t
a1 = ATN((x - l) / (l - y))
IF a1 < b THEN GOTO kiir
LINE (l, 450 - l)-(x, 450 - y)
repul:
x = x + vx * t
y = y + vy * t - 50 * t ^ 2
vy = vy - 100 * t
PSET (x, 450 - y), 14
IF y > 0 THEN GOTO repul
LOCATE 2, 1: PRINT "A hinta als pontjtl "; (x - l) / 18; "mternyire rtem fldet."
pp = 1 + 1 / ((COS(b) - COS(a2)) * (1 + COS(b)))
f = (l / 18) * (SIN(2 * b) * (COS(b) - COS(a2)) * (1 + SQR(pp)) + SIN(b))
LOCATE 3, 1: PRINT "Elmeleti roptavolsag:"; f; "meter."

FOR u = 1 TO 3
LOCATE u + 4, 3: PRINT cim$(u)
NEXT u
LOCATE 7, 20: PRINT ""
KEY(11) ON
KEY(14) ON
u = 3
bb: b$ = INKEY$
ON KEY(11) GOSUB fel
ON KEY(14) GOSUB le
IF b$ = CHR$(13) THEN GOTO hova
GOTO bb
fel:
LOCATE u + 4, 20: PRINT "  "
u = u - 1: IF u = 0 THEN u = 3
LOCATE u + 4, 20: PRINT ""
RETURN
le:
LOCATE u + 4, 20: PRINT "  "
u = u + 1: IF u = 4 THEN u = 1
LOCATE u + 4, 20: PRINT ""
RETURN

hova:
LOCATE 2, 1: PRINT "                                                             "
LOCATE 3, 1: PRINT "                                                             "
LOCATE 5, 2: PRINT "                                                             "
LOCATE 6, 2: PRINT "                                                             "
LOCATE 7, 2: PRINT "                                                             "
IF u = 1 THEN CLS : GOTO i2
IF u = 2 THEN GOTO i3
CLS

DATA 12,8.1,6,4.8,4,3.5,3,2.7,2.4,2.2,2
CLS : SCREEN 12
LINE (1, 1)-(1, 450)
LINE (1, 450)-(620, 450)
LOCATE 1, 2: PRINT "rptvolsg"
LOCATE 28, 60: PRINT "az elengeds szge"
l = 0
k = 1
uj: READ j
i = 1
a = pi / j
FOR b = .01 TO a STEP pi / 600
pp = 1 + 1 / ((COS(b) + 1) * (COS(b) - COS(a)))
f = SIN(2 * b) * (COS(b) - COS(a)) * (1 + SQR(pp)) + SIN(b)
PSET (2 * i, 450 - INT(f * 180)), k
i = i + 1
IF f > max THEN max = f: maxhely = b
NEXT b
k = k + 1: IF k = 16 THEN k = 1
IF INT(j) <> j AND j <> 2.4 THEN GOTO tovabb
LOCATE 25 - l, 13 + l * 12: PRINT 180 / j
LOCATE 26 - l, 13 + l * 12: PRINT INT(maxhely * 180 / pi)
l = l + 1
tovabb: IF j > 2 THEN GOTO uj

LOCATE 1, 60: PRINT "Tovbb? (enter)"
ss: S$ = INKEY$: IF S$ = "" THEN GOTO ss
IF S$ <> CHR$(13) THEN END
CLS
OPEN "hintmax.dat" FOR INPUT AS #1
LINE (1, 450)-(200, 250), 1
LINE (1, 450)-(600, 50), 3
beker:
INPUT #1, a
INPUT #1, maxhely
i = 270 * a / pi
'FOR b = 0 TO a * .99 STEP pi / 180
'pp = 1 + 1 / ((COS(b) + 1) * (COS(b) - COS(a)))
'f = SIN(2 * b) * (COS(b) - COS(a)) * (1 + SQR(pp)) + SIN(b)
'IF f > max THEN max = f: maxhely = b
'NEXT b
PSET (4 * i, 450 - maxhely * 1080 / pi)
LOCATE 1, 1: PRINT "szg:"; INT(a * 180 / pi); " ,j szg:"; INT(maxhely * 180 / pi)
IF a < pi / 2 - .01 THEN GOTO beker
CLOSE #1

