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

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

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




СОДЕРЖАНИЕ:


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

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