Эта страница посвящена геометриии.
Некоторые юзеры низкого мнения о графических возможностях QBasic-a. Но его вполне можно использовать при изучении школьного курса геометрии. Первая программа - построение правильных многоугольников. Затем показаны программы, которые строят треугольники по вводимым параметрам (сторонам и углам). Понятно, что размеры будут выражены в неких условных единицах, зависящих от коэффициента увеличения. Также могут проводиться медианы, биссектрисы и высоты,вписанные и описанные окружности.
‘ Рисуется правильный многоугольник,проводятся все его диагонали,затем оставляется звезда
SCREEN 12
INPUT " число сторон n=", n
INPUT "поворот в радианах f="; f
CLS
PAINT (30, 30),
15
COLOR 0
DIM X(50)
DIM Y(50)
r = 20
FOR I = 1 TO n
X(I) = r * COS(2 * 3.1415 * I / n + 1.57 + f)
Y(I) = r * SIN(2 * 3.1415 * I / n + 1.57 + f)
NEXT
FOR I = 1 TO n
PSET (300 + 10 * X(I), 240 - 10 * Y(I))
NEXT
FOR I = 1 TO n - 1
LINE (300 + 10 * X(I), 240 - 10 * Y(I))-(300 + 10 *
X(I + 1), 240 - 10 * Y(I + 1))
NEXT
LINE (300 + 10 * X(1), 240 - 10 * Y(1))-(300 + 10 *
X(n), 240 - 10 * Y(n))
SLEEP
FOR I = 1 TO n
FOR K = 1 TO n
LINE (300 + 10 * X(I), 240 - 10 * Y(I))-(300 + 10 *
X(K), 240 - 10 * Y(K))
NEXT
NEXT
SLEEP
FOR I = 1 TO n - 1
LINE (300 + 10 * X(I), 240 - 10 * Y(I))-(300 + 10 *
X(I + 1), 240 - 10 * Y(I + 1)), 15
NEXT
LINE (300 + 10 * X(1), 240 - 10 * Y(1))-(300 + 10 *
X(n), 240 - 10 * Y(n)), 15
SLEEP
'построение треугольника по 3-м сторонам и проведение медиан,
' серединных перпендикуляров и описанной(O-центр) и вписанной окружностей.
'Если чертеж слишком мелок,перезапустить с большим коэф. увеличения.
'После каждой операции нажимать Enter
CLS
SCREEN 12
COLOR 9
LOCATE (1), (5): PRINT "A"
DIM a%(100)
GET (30, 0)-(40, 15), a%
LOCATE (1), (5): PRINT "B"
DIM b%(100)
GET (30, 0)-(40, 15), b%
LOCATE (1), (5): PRINT "C"
DIM c%(100)
GET (30, 0)-(40, 15), c%
LOCATE (1), (5): PRINT "O"
DIM o%(100)
GET (30, 0)-(40, 15), o%
CLS
COLOR 9
2 INPUT "коэффициент увеличения k="; k
COLOR 15
LINE (0, 0)-(640, 480), 15, BF
q = 1 + k / 10
INPUT " c=", c
INPUT " b=", b
INPUT " a=", a
IF c <= SQR(b ^ 2 + a ^ 2) THEN i = 1 ELSE i = -1: q = .5 * q
IF a + b <= c THEN 1
IF b + c <= a THEN 1
IF a + c <= b THEN 1
xcn = (b ^ 2 + c ^ 2 - a ^ 2) / 2 / c
xa = 300 / k
xb = xa + 20 * k * c
IF xb > 630 THEN PRINT "уменьшить к или стороны прпорционально": GOTO 2
xc = xa + 20 * k * xcn
IF xc > 630 OR xc < 0 THEN PRINT "уменьшить к или стороны прпорционально": GOTO 2
yab = 250 * q
ycn = SQR(b ^ 2 - xcn ^ 2)
yc = yab - 20 * k * ycn
IF yc < 6 THEN PRINT "уменьшить к или стороны пропоционально": GOTO 2
COLOR 8
LINE (xa, yab)-(xb, yab) 'сторона AB:(c)
LINE (xa, yab)-(xc, yc) 'сторона AC:(b)
LINE (xb, yab)-(xc, yc) 'сторона BC:(a)
PUT (xa - 10, yab + 2), a%
PUT (xb + 1, yab), b%
PUT (xc, yc - 14), c%
SLEEP
xma = (xb + xc) / 2
yma = (yab + yc) / 2
LINE (xa, yab)-(xma, yma)
SLEEP
xmb = (xa + xc) / 2
ymb = (yab + yc) / 2
LINE (xb, yab)-(xmb, ymb)
SLEEP
xmc = (xa + xb) / 2
LINE (xc, yc)-(xmc, yab)
SLEEP
p = (a + b + c) / 2
s = SQR(p * (p - a) * (p - b) * (p - c))
r = a * b * c / 4 / s
dr = SQR(r ^ 2 - (c / 2) ^ 2)
yr = yab - 20 * k * dr * i
xr = xa + 10 * k * c
r = 20 * k * r
CIRCLE (xr, yr), r
PUT (xr + 1, yr), o%
LINE (xma, yma)-(xr, yr)
LINE (xmb, ymb)-(xr, yr)
LINE (xmc, yab)-(xr, yr)
csc = (a ^ 2 + b ^ 2 - c ^ 2) / 2 / a / b
snc = SQR(1 - csc ^ 2)
IF csc < 0 THEN uc = 3.14159 + ATN(snc / csc) ELSE uc = ATN(snc / csc)
snb = b * snc / c
csb = (a ^ 2 + c ^ 2 - b ^ 2) / 2 / a / c
IF csb < 0 THEN ub = 3.14159 + ATN(snb / csb) ELSE ub = ATN(snb / csb)
ua = 3.14159 - uc - ub
SLEEP
p = (b + c + a) / 2
s = SQR(p * (p - b) * (p - c) * (p - a))
r = 20 * k * s / p
dr = r / TAN(ua / 2)
xr = xa + dr
yr = yab - r
CIRCLE (xr, yr), r
SLEEP
END
1 PRINT "не существует"
Пример построения показан ниже.Здесь к=1.8 ; c=8; b=6 ;a=10