48 программ для изучающих Basic 1992 г.

Глава 2 - спираль, экспоненциальная спираль, логарифмическая спираль, кардиоида, циклоида, функция rosette, трехмерные координаты, поверхность сложной формы, "компьютерная графика" , "компьютерная графика", "калейдоскоп", "калейдоскоп 2", построение трехмерных изображений на плоскости.


ГЛАВА 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 Изображение шара.




СОДЕРЖАНИЕ:
  1. Глава 1 - преобразование двоичного кода в десятичный, "монстр", движущийся "монстр", движение "монстра" по горизонтали, управление движением "монстра", траектория падающего тела, влияние начальной скорости, влияние горизонтальной начальной скорости, игровая программа "артиллерия", игровая программа "питон", "ламбада", альтернлтивнлязлписьмелодий, "электромузыкальный инструмент", программирование по инструкции "out", решениеквадратныхуравнений.
  2. Глава 3 - формирование больших букв, преобразование десятичных чисел в, числа с произвольным основанием от 2 до 16) системы счисления, преобразования чисел с произвольным основанием (от2 до 16) системы счисления в десятичные, бегущая строка, перевод арабских чисел в римские, система линейных уравнений с тремя неизвестными, формированиелистинга, сортировка, календарь-ежедневник, сортировка списка имен, картотека с поиском по ключевым словам, "вечный" календарь.


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
B.B.S. Новости - Анкета от фирмы Limesoft.
От авторов - Урррраааааа! :) Psyсhоz 1э is hеrе!!! ;)
IS-DOS - Информация: новости в мире IS-DOS
Обмен опытом - о том как оперировать в ассемблере с длинными числами типа Long.
SOFT - обзор ZX ZIP и ZX UNZIP.

В этот день...   21 ноября