ГЛАВА 2
В данной главе собраны программы д емонстрирующие графические
возможности компьютера SINCLAIR ZX SPECTRUM. С возможностью
создания изображений с помощью символов запрограммированных
пользователем мы уже ознакомились в главе 1. В этой же главе будут
рассмотрены способы построения на экране различных графиков,
гистограмм, трехмерных изображений.
2.1 ПОСТРОЕНИЕ ОСЕЙ КООРДИНАТ.
В первой программе на экране строятся оси координат и, в качестве
примера, выводится график функции Y=SIN(X)/X.
100 GOSUB 3000: GOSUB 2200
1000 REM EXAMPL
1010 INPUT "STEP:"^
1020 TOR X-XA TO XE STEP S
1030 IF X о 0 THEN LET Y-SIN (X)/X
1040 GOSUB 2400
1050 NEXT X
1999 STOP
2000 REM INPUT OF DATA
2005 CIS
2010 PRINT4NPUT: *
2020 INPUT *U0,V0:*,U0,V0
2030 INPUT ■Xl.YL'XYl
2040 INPUT *ХА,ХЕЛХАДЕ
2100 LET X0-U0: LET Y0-V0
2110 LET X1-XL/XG*XA+X0
2115 LET X2-XL/XG*XE+X0
2120 LET Y1-YL/YG*YA+Y0
2125 LET Y2-YL/YG*YE+Y0
2140 LET MX-XL/XG: LET MY-YL/YG
2150 LET XT-XL/XT: LET YT-Yl/YT
2200 REM PLOT
2210 PLOT X1,Y0: DRAW X2-X1,0
2220 PLOTXO,Y1: DRAW 0,Y2-Y1
2230 FOR X-X1 TO X2 STEP XT
2240 PLOT X.Y0-2: DRAW 0,4: NEXT X
2250 FOR Y-Y1 TO Y2 STEP YT
2260 PLOT X0-2,Y: DRAW 4,0: NEXT Y
2330 RETURN
2400 LET XP-X*MX+X0: LET YP-Y*MY+Y0
2420 IF XP<0 OR XP>255 THEN GOTO 2490
2430 IF YP<0 OR YP>175 THEN GOTO 2490
2435 LET XP- INT XP: LET YP- INT YP
2440 PLOT XP,YP
2490 RETURN
3000 READ U0,V0^YL,XA,XE,YA,YE,XT,YT
3010 GOTO 2090
3100 DATA 126,87,240,160
3110 DATA -10,10,-1,1
3120 DATA 10,4
Программа 2.1 Осы координат.
Данная программа рисует оси координат для графика, при этом
исгюдьзухлся данные в строках 3000- '3120. Еслипо какимто соображениям
д анные оси координат не подходят, то записав строку 100 в виде:
100 GOSUB 2000
можно ввести новые данные для построения осей координат:
u0,v0 - начальная точка (исходное значение 126,87)
xl,yl - размер осей (240,160)
харсе - область значений х (-10,10)
уа,уе - область значений у (-1,1)
xt,yt - на сколько частей делятся оси хну (10,4)
Встроках2000- 2070производшсявюд этих данных, в строках2090 -2330
формируется вывод на экран осей, австроках2400 - 2490 - вывод графика
функции.
2.2 ЛИНЕЙНЫЕ ДИАГРАММЫ.
Программа 2.2 позволяет строить линейные диаграммы. Программа
работает в двух режимах. В первом режиме к 100 процентам нормируется
максимальное из введ енных д анных, а во втором режиме к 100 процентам
нормируется сумма введенных значений.
10 GOTO 500
100 CIS
110 PLOT 36,4
120 DRAW 0,160
130 FOR 1-0 TO 10
140 PLOT 33,1*16+4
150 DRAW 3,0
160 NEXT I
170 PRINT AT 21,2;*0"
180 FOR 1-1 TO 9
190 PRINT AT 21-2*1,1; 10*1
200 NEXT I
210 PRINT AT 1,0;" 100"
220 RETURN
500 REM
510 CLS: INPUT "N-?";N
520 DIM E(N)
530 FOR 1-1 TO N
540 INPUT "D";STR$ l;"-";E(l)
545 PRINT AT l,2;E|l)
550 NEXT I
560 PRINT AT 1+2,2;" 100 - S)UMM"
570 PRINT AT l+3,7;"M)AXIMUM"
580 INPUT A$
590 IF A$-"S" THEN GOTO 700
595 IF A$-"M" THEN GOTO 600
599 GOTO 560
600 REM MAXIMUM
605 LET E-E(l)
610 FOR 1-2 TO N
620 IF E(I)>E THEN LET E-E|l)
630 NEXT I
635 FOR 1-1 TO N
640 LET E(l)-E(l)/E*160
645 NEXT I
650 GOTO 800
700 REM SUMM
70S LET E-0
710 FOR 1-1 TO N
715 LET E-E+Ep)
720 NEXT I
730 GOTO 635
800 REM PLOT
805 GOSUB 100
810 PLOT 36,4: DRAW 16*N,0: PLOT 36,4
820 FOR 1-1 TO N
830 LET E- INT E(l)
840 DRAW 0,E: DRAW 16,0: DRAW 0,-E
845 PRINT PAPER I; INK 9; AT 20,2*(l-1)+5;t
850 NEXT I
Программа Z2 Линейные диаграммы.
■ В строках 500 - 550 производится выбор количества столбцов и
ввод данных.
■ В строках 560 - 599 производится выбор режима работы S или М.
■ В строках 100 - 220 выводится на экран вертикальная Линия
с масштабными делениями.
■ В строке 810 - горизонтальная линия.
■ В строках 820 - 850 на экран выводятся столбцы и их номера.
2.3 КРУГОВЫЕ ДИАГРАММЫ.
Программа 2.3 позволяет строить круговые диаграммы. Работает она
аналогично предыдущей, но только в режиме, когда за 100 процентов
берется сумма значений всех введенных д анных.
10 GOTO 500
100 CLS
110 CIRCLE 127,95,R
120 RETURN
500 REM
510 CIS: INPUT "N-?*;N
520 DIM EH: DIM F(N)
530 FOR 1-1 TO N
540 INPUT "D";STR$ l;"-';E(l)
545 PRINT AT l,2;E(l)
550 NEXT I
700REMSUMM
70S LET E-0
710 FOR 1-1 TO N
715 LET E-E+E(l)
720 NEXT I
730 FOR 1-1 TO N
740 LET E(l)-E(l)/E*360
750 NEXT I
760 LET E-0
770 FOR 1-1 TO N
780 LET E-E{l)+E: LET F|l)-E
790 NEXT I
800 REM PLOT
802 LET R-60
805 GOSUB 100
810 PLOT 127,95: DRAW R,0: PLOT 127,95
820 FOR 1-1 TO N
840 LET X-R*COS (2*PI*F0)/36O)
850 LET Y-R'SIN (2*PI*F(l)/360)
860 LET X- INT X:LET Y- INT Y
870 DRAW X,Y: PLOT 127,95
880 NEXT I
900 FOR 1-1 TO N
910 LET W-2*PI*(F(l)-E(l)/2)/360
915 LET Rl-2*R/3
920 LET X-Rl*COS W: LET Y-R/2* SIN W
930 LET X- INT (|X+127)/8+0.5)
940 LET Y- INT «95-Y)/8+0.5b2
950 PRINT PAPER I; INK 9; AT Y* INT (E(l)/3.6+0.5)
960 NEXT I
Программа ZS Круговые диофаммы.
В строке 110 рисуется окружность радиуса г. Значение г^бО задается в
строке 802. При необходимости это значение можно изменить или
модифицировать программу так, чтобы значение г вводилось по запросу,
аналогично вводу значения п в строке £10.
2.4 ПОЛЯРНЫЕ КООРДИНАТЫ.
Программа 2.4 демонстрирует принцип использования полярных
координат:
x-r(t) *sin(0
у - r(t) *cas(0
,где
r(t)-kl * sin к2
50 INPUT "K1-";K1
60 INPUT "K2-";K2
100 DEF-FN R(Q)- COS (K1*SIN (K2*Q))
110 CLS : LET A-0.1: LET S-75: LET W-0
120 FOR M) TO 45 STEP A
130 LET T-I/(2*PI)
140 LET X-FN R(T)* SINT
150 LETY-FNR(T)* COST
160 LET Y- INT (Y*S): LET X- INT (X*S)
170 IF 1-0 THEN PLOT X+125,Y+85: GOTO 200
180 DRAW X-XA,Y-YA
200 LET XA-X: LET YA-Y
210 NEXT I
Программа 24 Полярные координаты.
Введите значение К1=2.5 и К2=5 и на экране будет нарисована
"ромашка". Введ ите новые значения и получите другие картинки. Программа
выполняет сложные вычисления и работает довольно медленно.
2.S СПИРАЛЬ.
Программа 2.5 рисует на экране спираль в соответствии с
формулами:
у-к2уЫв bf
100 LET R-7
110 LET RD-R*2*PI
115 LETS-PI/32
120 INPUT K1-MC1
130 INPUT'A-'*
140 INPUT *K2-";IC2
150 INPUT "B-';B
160 LET XO-125: LET Y0-50
165 LET Z-0.1
170 CLS
180 PLOT X0.Y0
190 LET XA-XO: LET YA-YO
200 DEF-FN C(W)-X0+K1*W* COS (A*W)
210 DEF-FN S|Wj-Y0+K2*W* SIN (B*W)
220 TOR X-0 TO RD STEPS
230 LETXP- FN CpQ: LET YP- FN S(X)
232 LET Z-Z+0.1
234 LET YP-YP+Z
235 LET XP- INT XP: LET YP- INT YP
240 IF XP<1 THEN LET XP-1
245 IF YP<1 THEN LET YP-1
250 IF XP>255 THEN LET XP-255
255 IF YP>175 THEN LET YP-175
260 LET DX-XP-XA: LET DY-YP-YA
262 DRAW DX,DY
265 LET XA-XP: LET YA-YP
270 NEXT X
Программа 2.5 Спираль.
Увеличение значения к1 расшивает спираль по
горизонтали, а увеличение к2 - по вертикали. Симметричная
спираль с постоянным шагом получается при следующих
значениях к1=2, к2=2, al=l, в1=1.
2Л ЭКСПОНЕНЦИАЛЬНАЯ СПИРАЛЬ.
Программа 2.6 рисует экспоненциальную спираль в соответствии с
формулами:
x-c*e*(kl*f*Cos a*f)
y-c*e*(k2<f*Sin b*f)
100 LET R-2
110 LET RD-RW2
115 S- PI/100
200 DEF-FN C(W)-X0+0.02*EXP (Kl*W)*COS (A*W)
210 DEF-FN S(W)-Y0+0.02*EXP jK2*W)*SIN (B*W)
Программа 2.6 Экспоненциальная спираль.
Объедините программу 16 и 2.5 с помощью MERGE и запустите программу.
При значениях параметров kIH), 9 к2^0,9 Ь=5 на экране будет нарисована
экспоненциальная спираль, шаг которой постоянно увеличивается.
2.7 ЛОГАРИФМИЧЕСКАЯ СПИРАЛЬ.
Программа 2.7 рисует логарифмическую спираль в соответствии с
формулами:
x—kl*LN(l+f)*Cos a*f
уЧс2*LN(l+f)*Sin b*f
200 DEF-FN C(W)-X0+KT LN (1+W)* COS (A*W)
210 DEF-FN S|W)-Y0+K2* LN (1+Wf SIN (B*W)
Программа 2 7 Логарифмическая спираль.
Объедините программу 2.7 и 2.5 с помощью MERGE и запустите программу.
При значениях параметров к^ЗО к2=20 a^l Ь=1 на экране
будет нарисована логарифмическая спираль, шаг которой
постоянно уменьшается.
2.8 КАРДИОИДА.
Программа 2.8 рисует кардиоиду в соответствии с формулами:
хЧ[1 *(я *Cat f-л *Са» У)
уЧ(2 *(Ъ *Cos f-Ь *Cos If)
110 LETRD-2*PI
115 LETS-PI/100
120 INPUT'К!-';*!
130 INPUT 'A- 'A
140 INPUT "K2-";K2
150 INPUT'B-*;B
160 LET XO-125: LET YO-85
170 CIS
180 PLOT X0,Y0
190 LET XA-XO: LET YA-YO
200 DEF-FN C(W)-X0+K1 *(A* COS W-COS (A*W))
210 DEF-FN S(W)-Y0+K2*(B* SIN W-SIN (B*W))
220 TOR X-0 TO RD STEPS
230 LET XP- FN C|X): LET YP- FN S|X)
235 LET XP-INT XP: LET YP-INT YP
240 IFXP<1 THEN LET XP-1
245 IF YP<1 THEN LET YP-1
250 IF XP>255 THEN LET XP-255
255 IF YP>175 THEN LET YP-175
260 LET DX-XP-XA: LET DY-YP-YA
262 DRAW DX,DY
265 LETXA-XP: LET DY-YP-YA
270 NEXT X
Программа 18 Кардиоида.
ПризначенияхпараметровкДОО, к2=»20, а=2, в=2 ристется
кардиоида с одним минимумом, а при к1ж10, к2=10, а=»4, в"=4
рисуется кардиоида с тремя минимумами.
2.9 ЦИКЛОИДА.
Программа 2.9 рисует цикяоцду в соответствии с формулами:
x-kl*Cosf-k2*Cosk3*f
yk4*Sin f-k5*Cos k6*f
100 LET R—1.01
110 LET RD-2*PI
115 LET S—PI/100
120 INPUT "K1-";K1
125 INPUT "K2-*;K2
130 INPUT "K3-";K3
135 INPUT "K4-';K4
140 INPUT "K5-";K5
145 INPUT "K6-";K6
160 LET XO-125: LET YO-85
170 CIS
180 PLOT X0,Y0
190 LET XA-X0: LET YA-YO
200 DEF-FN C|W)-XO+K1*COS W-K2*COS (K3*W)
210 DEF-FN S(W)-Y0+K4*SIN W-K5*SIN (K6*W)
220 FOR X-0 TO RD STEPS
230 LET XP-FN QX): LET YP-FN S(X)
235 LET XP-INT XP: LET YP- INT YP
240 IF XP<1 THEN LET XW
245 IF YP<1 THEN LET YP-1
250 IF XP>255 THEN LET XP-255
255 IF YP>175 THEN LET YP-175
260 LET DX-XP-XA: LET DY-YP-YA
262 DRAW DX.DY
265 LET XA-XP: LET YA-YP
270 NEXT X
Программа 29 Циклоида.
В качестве примера можно предложить следующие значения параметров:
Kl-25, к2«25,5-10, к4»25, к5-25, кб-10.
2.10 ФУНКЦИЯ ROSETTE.
Программа 2.10 рисует цмфшс функции Rosette в соответствии с
формулами:
x4cl*Slnk2У+kl*Cos k3f
rk44b*5f*M*SIk k6*f
100 LET R-1.01
110 LET RD»2*PI
115 LET S—PI/100
175 LET XP- FN q0): LET YP- FN S(0)
180 PLOT XP,YP
190 LET XA-XP: LET YA-YP
200 DEF-FN C(W)-X0+KrSIN (K2*W)+K1*COS (K3*W)
210 DEF-FN S(W)-YO+K4*COS (K5*WJ+K4*SIN (K6*W)
Программа Z10 Rosette.
Объедините программу 2.9 и 2.10 с помощью MERGE и запустите
протрамму.
В качестве _
к1-50,к2=10,1&-7,к4
2.11 ТРЕХМЕРНЫЕ КООРДИНАТЫ.
Про1рамма2.11 рисует объемное изображение здлмюоидав соотастстаии
с формулами:
хЧс1*Явф* С*Ос2*0
Г-кЗ'Яяф* Яа(к4*0
Г-кЗлЯлф
100 LET R-7
110 LET RD-R*2*PI
115 LET S—PI/32
120 INPUT TCI-';*!
125 INPUT *K2-*;K2
130 INPUT *3--;K3
135 INPUT "K4-*;K4
140 INPUT "K5-*;K5
160 LET XO-125: LET Y0-30
165 LET Z-0
170 CLS
180 PLOT X0.Y0
190 LET XA-XO: LET YA-YO
200 DEF-FN C(W)"X0+K1 'SIN(W/(2*R))*COS (K2*W)
210 DEF-FN S(W)-Y0+K3*SIN(W/(2*R))*SIN (K4*W)
215 DEF-FN F(W)-K5*SIN (W/(2*R))
220 FOR X-0 TO RD STEPS
230 LET XP-FN C(X): LET YP-FN S(X|
232 LET Z-Z+FN F(X): LET YP-YP+Z
235 LET XP-INT XP; LET YP- INT YP
240 IF XP<1 THEN LET XP-1
245 IF YP<1 THEN LET YP-1
250 IF XP>255 THEN LET XP-255
255 IF YP>175 THEN LET YP-175
260 LET DX-XP-XA: LET DY-YP-YA
262 DRAW DX,DY
265 LET XA-XP: LET YA-YP
270 NEXT X
Программа 2.11 Объемный эллипсоид.
^ ^гачестте примера moxito ^ред дожить следующие значения параметров:
2.12 ПОВЕРХНОСТЬ СЛОЖНОЙ ФОРМЫ.
Программа 2.12 рисует линии изображающие поверхность
сложной формы:
100 LET SI-8: LET YB-55
110 LET Al-50: LET R-30
120 LET U—(R/Sl)*4+2
125 CLS
130 DIM A|U,U): DIM H(300)
135 TOR 1-1 TO 300
140 LET H(I)-(YB-R): NEXT I
150 LET T-0.04
155 LET C-l: LET K-l
160 FOR Y-R TO R-1 STEP Sl/2
170L£TC-C+1:LETS2-RA
180 FOR X-2*R TO 2*(R-1) STEP SI
190 LET K-K+l
200 LET Zl-Al* EXP {-{Y*Y/S2))* EXP |-(X*X/S2))
210 LET Z2-A1* EXP (-(Y*Y/S2))" EXP |-((X+S1)*(X+S1)/S2))
220 LET XI- INT(YB+S1*C+X): LETX2- INT (YB+S1*(C+1)+X)
230 LET Yl- INT (YB+Y+Z1): LET Y2- INT (YB+Y+Z2)
240 LET A(K,C)-Y1
250 IF Y1<H(X1) THEN GOTO 300
260 IF Y2<H(X2) THEN GOTO 300
270 IF Y1>H(X1) THEN LET HptlJHYt
280 IF Y2>H(X2) THEN LET H(X2)-Y2
285 LET XI- INT XI: LETX2- INTX2: LETY1- INT Yl:
LET Y2- INT Y2
290 PLOTXI,Yl: DRAW X2-X1,Y2-Y1: GOTO 310
300 LET A(K,q-0
310 NEXT X
320 LET A|K+1,C)-Y2
330 LET K-1
340 NEXTY
400 LET XI-0: LET X2-X1: LET Y1-X1: LET Y2-X1
410 LET XI-YB-2'R
420 FOR N-2 TO U STEP 2
440 TOR M-2 TO U-l
450 LET XI -XI+(N-1 )*S1 +M*S1
460 LET X2-XI+(N-1 )*S 1 +(M+1 )*S 1
470 IF A(N,M)-0 THEN GOTO 520
480 IF A(N,M+l)-0 THEN GOTO 520
490 LET Y1 -A(N,M): LET Y2-A(N,M+1)
495 LET XI-INT XI: LET X2-INT X2
497 LET Y1 -INT Y1: LET Y2-INT Y2
500 PLOTX1/Y1: DRAW X2-X1,Y2-Y1
520 NEXTM
530 NEXT N
Программа Z12 Поверхность сложной формы.
2.13 ПРОГРАММА "КОМПЬЮТЕРНАЯ ГРАФИКА"
100 CIS: LET К1-30
105 BORDER 4: INK 2: PAPER 5: BRIGHT 1
107 CIS
110 LET N-INT (RND *2+5)+3
120 DIM X(N+1): DIM Y(N+1)
125 DIM U(N+1): DIM V(N+1)
130 FOR 1-1 TON
140 LET X|I)-RND*225: LET Y(I)-RND*175
150 LET U{I)-RND*225: LET V|IJ- RND475
152 NEXT I
155 LET X(N+1)-X|1J: LET Y(N+1)-Y|1)
157 LET U|N+1J-U(1): LET V(N+1)-V{1)
160 TOR 1-1 TON+1
170 LET UIIHUW-XP)!/*!
180 LET V|IHV(I)-Y(I))/K1
190 NEXT I
200 PLOT X|1),Y{1)
205 LET XA-X(1): LET YA-Y(1)
210 FOR M TO K1
220 FOR 1-1 TO N+1
230 DRAW X(I)-XA,Y(I)-YA
235 LET XA-X(I): LET YA-YJI)
240 NEXT I
250 TOR M-l TO N+1
260 LET X|M)-X(M}+U(M)
270 LET Y(M)-Y(M)+V(M)
280 NEXT M
290 PLOT X(1)(Y(1)
300 LET XA-X(1): LET YA-Y{1)
310 NEXT J
998 STOP
999 PAPER 7: BORDER 7: INK 0: BRIGHT 0: CLS
Программа 213 Компьютерная графика.
2.14 ПРОГРАММА "КОМПЬЮТЕРНАЯ ГРАФИКА 2"
100 LET 1-15: LET J-15
110 LET K-10: LET L-11
115 BORDER 2: INK9
120 LET B$-CHR$ (INT (RND *1фШ)
130 LET CS-CHRS (INT (RND *16)+128)
140 LET M-K
150 FOR N-l TO J
160 PRINT PAPER RND *7; AT M,N;B$
170 NEXT N
180 LET N-J
190 FOR M-K TO L
200 PRINT PAPER RND*7; AT M,N;C$
210 NEXT M
220 LET M-L
230 FOR N-J TO I STEP -1
240 PRINT PAPER RND*7; AT M,N;B$
250 NEXT N
260 LET N-l
270 FOR M-L TO К STEP -1
280 PRINT PAPER RND*7; AT M,N;C$
290 NEXTМ
300 LET 1-1-1: LET J-4+1: LET K-K-1
310 IF K<0 THEN STOP
320 LET L-L+l
330 GOTO 120
999 BORDER 7: PAPER 7: INK 0: CIS
Программа 214 Компьютерная графика 2
2.1 S ПРОГРАММА "КАЛЕЙДОСКОП**.
100 LET X—16: LET Y-10
105 PAPER 7
110 PRINT PAPER 0; AT Y^*"
120 FOR J-1 TO 10
130 FOR 1-1 TO 4
140 PAPER RND*7
150 PRINT AT Y-W
160 PRINT AT Y-AX+I;""
170 PRINT AT Y+J^+l;*"
180 PRINT AT Y+J,X-I;'*
190 PRINT AT YW'
200 PRINT AT Y-W+Jt"
210 PRINT AT Y+I.X+J;""
220 PRINT AT Y+U-V"
230 NEXT I
310 PRINT AT 10,16- ДГ"
320 PRINT AT 10,16+4;'"
330 PRINT AT 10-4,16;*"
340 PRINT AT 10+4,16;* *
350 NEXT J
360 GOTO 110
999 PAPER 7: INK 0: CIS
Программа 215 Калейдоскоп.
2.16 ПРОГРАММА "КАЛЕЙДОСКОП 2"
100 LET Х-16: LET Y-10
110 PRINT PAPER 0;ATY,X;"
120 FOK J-1 TO 10
125 LET K-0
127 PAPER RND*7
130 FOR hX-J TO X
160 PRINT AT Y+K.I;- *
170 PRINT AT Y-K,I;"
180 LET K-K+1: NEXT I
185 LET K-J
190 FOR 1-Х TO X+J
210 PRINT AT Y+K,I;"
220 PRINT AT Y-K,l;""
230 LET K-K-l: NEXT I
240 NEXT J
245 PAUSE 100
250 RUN
998 STOP
999 PAPER 7: INK 0: CIS
Программа 116 Калейдоскоп 2
Программы 2.15 и 2.16 создают на экране постоянно изменяющиеся
цветные узоры. Изменения определяются работой генератора случайных
чисел (RND) в строках 140 и 127 соответственно. Значения параметра
PAPER лежат в диапазоне 0-7, поэтому значение RND умножается на 7.
2.17 ПОСТРОЕНИЕ ТРЕХМЕРНЫХ ИЗОБРАЖЕНИЙ НА
ПЛОСКОСТИ.
Переход от трехмерных координат к двумерным
выполняется согласно формулам:
и-лг+лг
r-z+r
На рисунке 2.2 поясняется порядок переход а от трехмерных координат
к двумерным.
100 GOSUB 3000
1000 LET Z-0: LET R-0.75
1005 LET S-0.03
1010 FOR A-0 TO 2*PI STEP S
1020 LET X-R*COS (A): LET Y-R*SIN(A): GOSUB 2400
1030 NEXT A
1050 LET Y-0
1060 TOR A-0 TO 2*PI STEP S
1070 LET X-R*COS (A): LET Z-R*SIN(A): GOSUB 2400
1080 NEXT A
1090 LET X-0
1100 FOR A-0 TO 2*PI STEP S
1110 LET Y-R'COS(A): LET Z-R'SIN(A): GOSUB
2400
1120 NEXT A
1999 STOP
2000 REM
2005 CIS
2010 PRINT "INPUT:"
2020 INPUT "U0,V0: ",UO,VO
2030 INPUT "XL,YL,ZL: -Д,У1Л
2040 INPUT "XA^E: "МХЕ
2050 INPUT "YA.YE: ",YA,YE
2060 INPUT "ZA7E: "ДАДЕ
2070 INPUT "XT,YT,ZT: "ДУТД
2080 INPUT "Wl: '.Wl
2090 LET XG-ABS (XA)+ ABS (XE)
2094 LET YG-ABS |YA)+ ABS (YE)
2096 LET ZG-ABS (ZA)+ ABS (ZE)
2100 LET XO-UO:LET ZO-VO: LET YO-O
2110 LET X1-XL/XG*XA+X0
2115 LET X2-XL/XG*XE+X0
2120 LET Y1-YL/YG*YA+Y0
2125 LET Y2-YL/YG*YE+Y0
2130 LET Z1-ZL/ZG*ZA+Z0
2135 LET Z2-ZL/ZG*ZE+Z0
2140 LET MX-XL/XG: LET MY-YL/YG: LET MZ-ZL/ZG
2150 LET XT-XL/XT: LET YT-Yl/YT: LET ZT-ZL/ZT
2160 LET CO- COS (2*PI *WI/360)
2165 LET SI- SIN (2*PI *WI/360)
2200 REM PLOT
2210 PLOT XUO: DRAW X2-X1,0
2220 PLOT Х0Л: DRAW 0.Z2-Z1
2230 FOR X-X1 TO X2 STEP XT
2240 PLOT ХДО-2: DRAW 0,4: NEXT X
2250 FOR Z-Z1 TO Z2 STEP ZT
2260 PLOT X0-2,Z: DRAW 4,0: NEXT Z
2270 LET UA- INT (UO+CO*Y1): LET VA- INT (V0+SI*Y1)
2280 LET UE- INT (UO+CO*Y2): LET VE- INT
(V0+SI*Y2)
2290 PLOT UA,VA: DRAW UE-UA,VE-VA
2300 FOR Y-Y1 TO Y2 STEP YT
2310 LET U-UO+CO*Y: LET V-V0+SI*Y
2320 PLOT U,V-2: DRAW 0,4: NEXT Y
2330 RETURN
2400 LET XP-X*MX: LET YP-Y*MY: LET ZP-Z*MZ
2410 LET U-XP+CO*YP+UO: LET V-ZP+SI*YP+V0
2415 LET U- INT(U): LET V- INT(V)
2420 IF U<0 OR U>255 THEN GOTO 2490
2430 IF V<0 OR V>175 THEN GOTO 2490
2440 PLOT U,V
2490 RETURN
3000 READ U0,V0^L,YL/ZL^A^E/YA,YE/ZA,ZE^T,VT,ZT,WI
3010 GOTO 2090
3100 DATA 126,87,160,160,160
3110 DATA -1,1,-1,1,-1,1
3120 DATA 4,4,4,45
Программа 217 Сечение шара тремя плоскостями.
Программа 2.17 в качестве примера строит сечения шара в трех
ортогональных плоскостях. Оси координат строятся аналогично программе
2.1. Дополнительно для оси Z вводятся параметры:
za,ze - область значений переменной по оси Z,
zl - размер оси,
zt - на сколько частей делится ось,
wi - угол между осями Y,Z.
Аналогично программе 2.1 для ввода новых значений необходимо
изменить строку 100 так:
100 GOSUB 2000
В строках 2000 - 2080 производится ввод новых параметров для
построения осей, а в строках 2200 - 2330 выполняется вывод их на экран. В
строках 3000 - 3120 находятся начальные данные для построения осей,
которые Могут подойти для построения большинства графиков.
С увеличением количества сечений возрастает наглядность представления
о форме предмета. В качестве примера в программе 2.18 строится 10 сечений
шара по оси Z. Программа работает после объед инения с программой 2.17.
2.18 ИЗОБРАЖЕНИЕ ШАРА.
1002 FOR В -PI/2 ТО PI/2 STEP 0.3
1005 LET S-0.06
1020 LET X-R*COS A *COS B: LET Y-R'SIN A "COS B:
LET Z-R*SIN B: GOSUB 2400
1035 NEXT В
Программа 2.18 Изображение шара.