|
Читатель-читателю - алгоритм построения настоящей окружности и круга.
|
Построение окружности и круга
© Михаил Усачев, г. Шахты, 1995.
Хочу предложить идейку, которую "подсунул" мне мой друг: алгоритм построения круга, при этом получается настоящий круг, а не многоугольник.
Алгоритм: весь круг разбиваем на 1 8 секторов (см. рисунок).
Y
При движении от начала координат по оси Х вправо, с приближением к абсциссе точки В, ордината все чаще уменьшается на единицу, но не больше, чем на единицу. Необходимо лишь узнать, на каком шаге уменьшить ординату на единицу, чтобы построить сектор. Результаты вычислений для первого сектора можно использовать для построения остальных секторов.
Я реализовал этот алгоритм в конкретной программе, результат работы которой впечатляет. Последовательность кругов с радиусами от 40 до 1 выстраивается примерно за полсекунды.
Но так как любую программу можно улучшить (ускорить), то мое предложение такое: попытайтесь самостоятельно реализовать этот алгоритм. Свой же вариант я не привожу, чтобы не " загонять" программистов в его рамки.
Процедура построения окружности и круга
© Герасим Троеглазов, с. Гайтер (Хабаровский край), 1995.
Существует несколько методов рисования окружности, но для программ, использующих векторную графику, тригонометрический метод отпадает - очень медленный. Есть ещё уравнение окружности, его мы и рассмотрим.
Наберём программу: 9000 LET x=128: LET y=88: LET r=40 9010 FOR a=0 TO r 9020 LET x0=SQR (r*r-a*a) 9030 PLOT x-x0,y+a:PLOT x+x0,y+a 9040 PLOT x-x0,y-a:PLOT x+x0,y-a 9050 NEXT a
На скорость пока не будем обращать внимания (БЕЙСИК - ведь), а посмотрим на верх и низ окружности: вид портят расстояния между точками. Обойдем эту проблему так: разобьём окружность
на восемь секторов, каждый из которых отличается от других только положением на окружности.
Рассчитаем один, и по этим же данным построим остальные:
9000 LET x=128: LET y=88: LET r=40
9010 FOR a=0 TO r*COS (PI/4)
9020 LET x0=SQR (r*r-a*a)
9030 PLOT x-x0,y+a:PLOT x+x0,y+a
9035 PLOT x-a,y+x0:PLOT x+a,y+x0
9040 PLOT x-x0,y-a:PLOT x+x0,y-a
9045 PLOT x-a,y-x0:PLOT x+a,y-x0
9050 NEXT a
С окружностью разобрались, возьмёмся за круг. Это дело куда проще предыдущего: 9000 LET x=128: LET y=88: LET r=40 9010 FOR a=0 TO r 9020 LET x0=SQR (r*r-a*a) 9030 PLOT x-x0,y+a: DRAW x0*2,0 9040 PLOT x-x0,y-a: DRAW x0*2,0 9050 NEXT a
Теперь примемся за АССЕМБЛЕР. Здесь надо решить две математические проблемы: квадратный корень и возведение в квадрат. Если использовать встроенный калькулятор, то скорость построения будет мало отличаться от Бейсика.
Одним из возможных решений является таблица квадратов чисел от нуля до максимального радиуса окружности. Если максимальный радиус принять за 127 (окружность большего размера на экране не поместится), на каждое число по два байта, итого: 128*2=256 байт. Не так уж и много. Следующая программа заполнит эту таблицу: 9000 LET adr=49700 9010 FOR a=0 TO 127 9020 LET n=a*a
9030 LET n1=INT (n/256): LET n2=n-n1*256 9040 POKE adr,n2: POKE adr+1,n1 9050 LET adr=adr+2 9060 NEXT a
9070 SAVE "data" CODE 4 9700,256
Перейдем к программе на АССЕМБЛЕРЕ. Она расположена после таблицы, с адреса 50000. Точками входа являются: 50000 - рисование окружности и 50370 - рисование круга. Программа рисования окружности аналогична БЕЙСИК-программе, только части линии, выходящей за пределы экрана не отображаются. Круг же имеет некоторые отличия: рисование линий идет через любой заданный шаг по горизонтали, про шаг=0, черчение идет линия к линии. Кроме того, линия чертится не по точкам, а по байтам, что во много раз увеличивает скорость программы. А байты для заполнения берутся из шаблонов UDG-графики, поэтому круг получается сразу же заполненный графическим узором.
Переменные, при помощи которых происходит перенос данных в программу:
23297 (#5В01) - координата Х окружности или круга (0.. .255).
23298 (#5В02) - координата Y окружности или круга (0.175).
23299 (#5В03) - радиус окружности или круга (0.127).
23301 (#5В05) - определяет символ UDG-графики, при этом 0 соответствует "А", 1 - "В" и т.д.
23302 (#5В06) - шаг линий по горизонтали при рисовании круга (0. радиус круга).
23303 (#5В07) - флаг наложения (0 - ИЛИ; 1 - ИСКЛЮЧАЮЩЕЕ ИЛИ).
Листинг программы.
1 ORG 50000
2 DATA EQU 4 9700
3 KOORDX |
EQU |
#5B01 |
4 KOORDY |
EQU |
#5B02 |
5 RADIUS |
EQU |
#5B03 |
6 SYSTEM |
EQU |
#5B04 |
7 SYMBOL |
EQU |
#5B05 |
8 STEP |
EQU |
#5B0 6 |
9 FLAG |
EQU |
#5B07 |
10 |
ENT |
$ |
11 |
LD |
A,(RADIUS |
12 |
LD |
(LC480),A |
13 |
CALL |
LC4B3 |
14 |
NOP |
|
15 |
NOP |
|
16 |
NOP |
|
17 |
NOP |
|
18 |
LD |
B, A |
19 LC35E |
PUSH |
BC |
20 |
LD |
A,(LC480) |
21 |
LD |
L, A |
22 |
LD |
H, #00 |
23 |
CALL |
LC4 6A |
24 |
EX |
DE, HL |
25 |
LD |
L, B |
26 |
LD |
H, #00 |
27 |
CALL |
LC4 6A |
28 |
EX |
DE, HL |
29 |
AND |
A |
30 |
SBC |
HL, DE |
31 |
CALL |
LC43A |
32 |
DEC |
L |
33 |
DEC |
L |
34 |
LD |
A, L |
35 |
LD |
(LC47F) ,A |
36 |
LD |
B, A |
37 |
LD |
A,(KOORDX |
38 |
SCF |
|
39 |
SUB |
B |
40 |
JR |
C, LC390 |
41 |
LD |
E, A |
42 |
POP |
BC |
43 |
PUSH |
BC |
44 |
LD |
A,(KOORDY |
45 |
ADD |
A, B |
46 |
LD |
C, E |
47 |
LD |
B, A |
48 |
CALL |
LC481 |
49 LC390 |
SCF |
|
50 |
LD |
A, (LC47F) |
51 |
LD |
B, A |
52 |
LD |
A,(KOORDX |
53 |
ADD |
A, B |
54 |
JR |
C,LC3A7 |
55 |
LD |
E, A |
56 |
POP |
BC |
57 |
PUSH |
BC |
58 |
LD |
A, (KOORDY) |
59 |
ADD |
A, B |
60 |
LD |
C, E |
61 |
LD |
B, A |
62 |
CALL |
LC481 |
63 LC3A7 |
SCF |
|
64 |
LD |
A, (LC47F) |
65 |
LD |
B, A |
66 |
LD |
A,(KOORDX) |
67 |
SUB |
B |
68 |
JR |
C,LC3BE |
69 |
LD |
E, A |
70 |
POP |
BC |
71 |
PUSH |
BC |
72 |
LD |
A,(KOORDY) |
73 |
SUB |
B |
74 |
LD |
B, A |
75 |
LD |
C, E |
76 |
CALL |
LC481 |
77 LC3BE |
SCF |
|
78 |
LD |
A, (LC47F) |
79 |
LD |
B, A |
80 |
LD |
A,(KOORDX) |
81 |
ADD |
A, B |
82 |
JR |
C,LC3D5 |
83 |
LD |
E, A |
84 |
POP |
BC |
85 |
PUSH |
BC |
86 |
LD |
A,(KOORDY) |
87 |
SUB |
B |
88 |
LD |
B, A |
89 |
LD |
C, E |
90 |
CALL |
LC481 |
91 LC3D5 |
SCF |
|
92 |
POP |
BC |
93 |
PUSH |
BC |
94 |
LD |
A,(KOORDX) |
95 |
SUB |
B |
96 |
JR |
C,LC3EC |
97 |
LD |
E, A |
98 |
LD |
A, (LC47F) |
99 |
LD |
B, A |
100 |
LD |
A, (KOORDY) |
101 |
ADD |
A, B |
102 |
LD |
B, A |
103 |
|
LD |
C, E |
104 |
|
CALL |
LC481 |
105 |
LC3EC |
SCF |
|
106 |
|
POP |
BC |
107 |
|
PUSH |
BC |
108 |
|
LD |
A,(KOORDX) |
109 |
|
SUB |
B |
110 |
|
JR |
C,LC403 |
111 |
|
LD |
E, A |
112 |
|
LD |
A, (LC47F) |
113 |
|
LD |
B, A |
114 |
|
LD |
A, (KOORDY) |
115 |
|
SUB |
B |
116 |
|
LD |
B, A |
117 |
|
LD |
C, E |
118 |
|
CALL |
LC481 |
119 |
LC403 |
SCF |
|
120 |
|
POP |
BC |
121 |
|
PUSH |
BC |
122 |
|
LD |
A,(KOORDX) |
123 |
|
ADD |
A, B |
124 |
|
LD |
E, A |
125 |
|
JR |
C,LC41A |
126 |
|
LD |
A, (LC47F) |
127 |
|
LD |
B, A |
128 |
|
LD |
A, (KOORDY) |
129 |
|
ADD |
A, B |
130 |
|
LD |
B, A |
131 |
|
LD |
C, E |
132 |
|
CALL |
LC481 |
133 |
LC41A |
SCF |
|
134 |
|
POP |
BC |
135 |
|
PUSH |
BC |
136 |
|
LD |
A,(KOORDX) |
137 |
|
ADD |
A, B |
138 |
|
LD |
E, A |
139 |
|
JR |
C,LC431 |
140 |
|
LD |
A, (LC47F) |
141 |
|
LD |
B, A |
142 |
|
LD |
A, (KOORDY) |
143 |
|
SUB |
B |
144 |
|
LD |
B, A |
145 |
|
LD |
C, E |
146 |
|
CALL |
LC481 |
147 |
LC4 31 |
POP |
BC |
148 |
|
DEC |
B |
149 |
|
LD |
A, B |
150 |
|
CP |
#FF |
151 |
|
JP |
NZ,LC35E |
152 |
|
RET |
|
153 |
LC4 3A |
PUSH |
BC |
154 |
|
PUSH |
DE |
155 |
|
PUSH |
IX |
156 |
|
PUSH |
AF |
157 |
|
LD |
IX,DATA |
158 |
|
LD |
B, #80 |
159 |
|
LD |
C, #00 |
160 |
LC4 4 7 |
LD |
E,(IX+0) |
161 |
|
LD |
D,(IX+1) |
162 |
|
INC |
IX |
163 |
|
INC |
IX |
164 |
|
LD |
A, B |
165 |
|
CP |
#00 |
166 |
|
JR |
Z,LC45F |
167 |
|
DEC |
B |
168 |
|
PUSH |
HL |
169 |
|
SCF |
|
170 |
|
SBC |
HL, DE |
171 |
|
POP |
HL |
172 |
|
INC |
C |
173 |
|
JR |
NC,LC447 |
174 |
LC4 5F |
LD |
A,C |
175 |
|
NOP |
|
176 |
|
LD |
L, A |
177 |
|
LD |
H, #00 |
178 |
|
POP |
AF |
179 |
|
POP |
IX |
180 |
|
POP |
DE |
181 |
|
POP |
BC |
182 |
|
RET |
|
183 |
LC4 6A |
PUSH |
IX |
184 |
|
PUSH |
DE |
185 |
|
ADD |
HL, HL |
186 |
|
EX |
DE, HL |
187 |
|
LD |
IX,DATA |
188 |
|
ADD |
IX, DE |
189 |
|
LD |
L, (IX+0) |
190 |
|
LD |
H, (IX+1) |
191 |
|
POP |
DE |
192 |
|
POP |
IX |
193 |
|
RET |
|
194 |
LC47F |
DEFB |
#47 |
195 |
LC4 8 0 |
DEFB |
#48 |
196 |
LC4 81 |
LD |
D,C |
197 |
|
LD |
E, B |
198 |
|
LD |
A, B |
199 |
|
CP |
#B0 |
200 |
|
RET |
NC |
201 |
|
LD |
A, #AF |
202 |
|
SUB |
E |
203 |
|
LD |
E, A |
204 |
|
AND |
A |
205 |
|
RRA |
|
206 |
|
SCF |
|
207 |
|
RRA |
|
208 |
|
AND |
A |
209 |
|
RRA |
|
210 |
|
XOR |
E |
211 |
|
AND |
#F8 |
212 |
|
XOR |
E |
213 |
|
LD |
H, A |
214 |
|
LD |
A, D |
215 |
|
RLCA |
|
216 |
|
RLCA |
|
217 |
|
RLCA |
|
218 |
|
XOR |
E |
219 |
|
AND |
#C7 |
220 |
|
XOR |
E |
221 |
|
RLCA |
|
222 |
|
RLCA |
|
223 |
|
LD |
L, A |
224 |
|
LD |
A, D |
225 |
|
AND |
#07 |
226 |
|
LD |
B, A |
227 |
|
INC |
B |
228 |
|
LD |
A, #FE |
229 |
LC4A8 |
RRCA |
|
230 |
|
DJNZ |
LC4A8 |
231 |
|
LD |
B, #FF |
232 |
|
XOR |
B |
233 |
|
LD |
B, A |
234 |
|
LD |
A,(HL) |
235 |
|
OR |
B |
236 |
|
LD |
(HL),A |
237 |
|
RET |
|
238 |
LC4B3 |
CALL |
#2D2 8 |
239 |
|
RST |
#28 |
240 |
|
DEFB |
#A2,#A3,#04 |
241 |
|
DEFB |
#1F,#04,#38 |
242 |
|
CALL |
#2DD5 |
243 |
|
LD |
B, A |
244
245
246
247
248
249
250
251
252 |
; * Точ]
LC4C9 |
RET ка вход
CALL
LD
LD
PUSH
LD
LD
CALL |
[а для круга *
LC5DF
A,(RADIUS)
B, A BC L, B H, #00 LC4 6A |
253 |
EX |
DE, HL |
254 |
LD |
A,(RADIUS) |
255 |
LD |
L, A |
256 |
LD |
H, #00 |
257 |
CALL |
LC4 6A |
258 |
AND |
A |
259 |
SBC |
HL, DE |
260 |
CALL |
LC43A |
261 |
LD |
A, L |
262 |
LD |
(LC52E),A |
263 |
LD |
A, (LC52E) |
264 |
LD |
B, A |
265 |
LD |
A,(KOORDX) |
266 |
SUB |
B |
267 |
CALL |
C,LC51C |
268 |
LD |
E, A |
269 |
LD |
(LC52C),A |
270 |
POP |
BC |
271 |
PUSH |
BC |
272 |
LD |
A, (KOORDY) |
273 |
SUB |
B |
274 |
LD |
(LC52D),A |
275 |
LD |
C, E |
276 |
LD |
B, A |
277 |
CALL |
LC531 |
278 |
POP |
BC |
279 |
PUSH |
BC |
280 |
LD |
A, (KOORDY) |
281 |
ADD |
A, B |
282 |
LD |
B, A |
283 |
LD |
A,(LC52C) |
284 |
LD |
C, A |
285 |
INC |
B |
286 |
CALL |
LC531 |
287 |
POP |
BC |
288 |
LD |
A,(STEP) |
289 |
LD |
C, A |
290 |
LD |
A, B |
291 |
INC |
C |
292 |
SUB |
C |
293 |
LD |
B, A |
294 |
JR |
NC,LC4C9 |
295 |
RET |
|
296 LC51C |
NEG |
|
297 |
LD |
D, A |
298 |
LD |
A,(LC52E) |
299 |
ADD |
A, A |
300 |
SUB |
D |
301 |
SRL |
A |
302 |
LD |
(LC52E),A |
303 |
|
LD |
A, #00 |
304 |
|
RET |
|
305 |
LC52C |
DEFB |
#64 |
306 |
LC52D |
DEFB |
#55 |
307 |
LC52E |
DEFB |
#1C |
308 |
LC52F |
DEFB |
#04,#00 |
309 |
LC531 |
LD |
A,B |
310 |
|
CP |
#AF |
311 |
|
RET |
NC |
312 |
|
LD |
D, C |
313 |
|
LD |
E, B |
314 |
|
LD |
A, #AF |
315 |
|
SUB |
E |
316 |
|
LD |
E, A |
317 |
|
AND |
A |
318 |
|
RRA |
|
319 |
|
SCF |
|
320 |
|
RRA |
|
321 |
|
AND |
A |
322 |
|
RRA |
|
323 |
|
XOR |
E |
324 |
|
AND |
#F8 |
325 |
|
XOR |
E |
326 |
|
LD |
H, A |
327 |
|
LD |
A, D |
328 |
|
RLCA |
|
329 |
|
RLCA |
|
330 |
|
RLCA |
|
331 |
|
XOR |
E |
332 |
|
AND |
#C7 |
333 |
|
XOR |
E |
334 |
|
RLCA |
|
335 |
|
RLCA |
|
336 |
|
LD |
L, A |
337 |
|
PUSH |
HL |
338 |
|
LD |
BC,#57 FF |
339 |
|
AND |
A |
340 |
|
SBC |
HL, BC |
341 |
|
JR |
C,LC55C |
342 |
|
POP |
HL |
343 |
|
RET |
|
344 |
LC55C |
POP |
HL |
345 |
|
LD |
A, H |
346 |
|
AND |
#07 |
347 |
|
LD |
IX,(#5C7B) |
348 |
|
LD |
B, #00 |
349 |
|
LD |
C, A |
350 |
|
ADD |
IX, BC |
351 |
|
LD |
A, (SYMBOL) |
352 |
|
ADD |
A, A |
353 |
|
ADD |
A, A |
354 |
|
ADD |
A, A |
355 |
|
LD |
C, A |
356 |
|
ADD |
IX, BC |
357 |
|
LD |
A, (IX+0) |
358 |
|
LD |
(SYSTEM),A |
359 |
|
LD |
A, D |
360 |
|
AND |
#07 |
361 |
|
LD |
B, A |
362 |
|
I NC |
B |
363 |
|
LD |
(LC52F) ,A |
364 |
|
LD |
A, (LC52E) |
365 |
|
ADD |
A, A |
366 |
|
LD |
D, A |
367 |
|
LD |
A, (SYSTEM) |
368 |
|
LD |
E, #FE |
369 |
LC58A |
RRC |
E |
370 |
|
AND |
E |
371 |
|
DJNZ |
LC58A |
372 |
LC58F |
XOR |
(HL) |
373 |
|
LD |
(HL),A |
374 |
|
LD |
A, (LC52F) |
375 |
|
LD |
B, A |
376 |
|
LD |
A, #08 |
377 |
|
SUB |
B |
378 |
|
LD |
B, A |
379 |
|
LD |
A, D |
380 |
|
SUB |
B |
381 |
|
LD |
D, A |
382 |
|
JR |
C, LC5CE |
383 |
|
I NC |
HL |
384 |
|
LD |
A, L |
385 |
|
AND |
#1F |
386 |
|
SUB |
#01 |
387 |
|
RET |
C |
388 |
LC5A5 |
LD |
A,D |
389 |
|
SUB |
#08 |
390 |
|
JR |
C,LC5B9 |
391 |
|
LD |
D, A |
392 |
|
LD |
A, (SYSTEM) |
393 |
LC5AE |
XOR |
(HL) |
394 |
|
LD |
(HL),A |
395 |
|
I NC |
HL |
396 |
|
LD |
A, L |
397 |
|
AND |
#1F |
398 |
|
SUB |
#01 |
399 |
|
RET |
C |
400 |
|
JR |
LC5A5 |
401 |
LC5B9 |
LD |
A,D |
402 |
|
AND |
#07 |
403 |
|
LD |
B, A |
404 |
|
LD |
A, #08 |
405 |
|
SUB |
B |
406 |
|
LD |
B, A |
407 |
|
LD |
E, #FE |
408 |
|
LD |
A, (SYSTEM) |
409 |
LC5C6 |
AND |
E |
410 |
|
RLC |
E |
411 |
|
DJNZ |
LC5C6 |
412 |
LC5CB |
XOR |
(HL) |
413 |
|
LD |
(HL),A |
414 |
|
RET |
|
415 |
LC5CE |
LD |
A,D |
416 |
|
ADD |
A, #08 |
417 |
|
LD |
D, A |
418 |
|
AND |
#07 |
419 |
|
LD |
B, A |
420 |
|
LD |
E, #FE |
421 |
|
LD |
A,(HL) |
422 |
LC5D8 |
AND |
E |
423 |
|
RLC |
E |
424 |
|
DJNZ |
LC5D8 |
425 |
|
LD |
(HL),A |
426 |
|
RET |
|
427 |
LC5DF |
LD |
A,(FLAG) |
428 |
|
CP |
#00 |
429 |
|
JR |
Z, LC5EB |
430 |
|
CP |
#01 |
431 |
|
JR |
Z,LC5F7 |
432 |
|
RET |
|
433 |
LC5EB |
LD |
A,#B6 |
434 |
LC5ED |
LD |
(LC58F),A |
435 |
|
LD |
(LC5AE),A |
436 |
|
LD |
(LC5CB),A |
437 |
|
RET |
|
438 |
LC5F7 |
LD |
A,#AE |
439 |
|
JR |
LC5ED |
Некоторые комментарии к программе.
Строка 11 - радиус заносится в A и переход на расчет формулы A=R*COS(PI/4). Строка 18 - в B счётчик точек сектора окружности.
Строка 20 - начало расчета формулы уравнения окружности B=SQR(R*R-A*A). Строка 40 - PLOT X0-B,Y0+A. Строка 54 - PLOT X0+B,Y0+A. Строка 68 - PLOT X0-B,Y0-A. Строка 82 - PLOT X0+B,Y0-A. Строка 96 - PLOT X0-A,Y0+B. Строка 110- PLOT X0-A,Y0-B. Строка 125 - PLOT X0+A,Y0+B. Строка 139- PLOT X0+A,Y0-B. Строка 147 - переход к следующей точке сектора, если B>0, иначе - выход. Строка 153 - расчёт квадратного корня из Н. Вычисление идёт по таблице квадратов чисел, расположенной по адресу 49700 и заполненную сформированной выше последовательностью (файл "data" CODE). Результат в регистре Н.
Строка 183 - возведение числа в Н в квадрат, также по таблице. Результат в Н.
Строка 196 - печать точки на экране. Программа взята из книги "Элементарная графика". Строка 239 - A=R*COS(PI/4).
Строка 246 - точка входа для рисования круга; следует переход в подпрограмму установки режима наложения.
Строка 247 - расчёт уравнения окружности. Строка 263 - вычисление левого края отрезка. Строка 272 - отрезок внизу Y=Y0+A. Строка 280 - отрезок вверху Y=Y0+A. Строка 288 - А=А+шаг. Строка 294 - переход к следующей линии.
Строка 296 - расчёт длины отрезка при выходе за левый край отрезка.
Строка 305 - рабочие переменные.
Строка 309 - черчение отрезка.
Строка 312 - расчёт адреса в экране.
Строка 338 - расчёт адреса шаблона.
Строка 358 - зануление крайних левых битов в байте, взятом из шаблона в левом конце отрезка.
Строка 374 - средняя часть отрезка; байты устанавливаются полностью. Строка 392 - правый байт отрезка; зануление правых битов.
Строка 415 - Если длина отрезка меньше 8 и он находится в одном байте экрана, то происходит зануление справа зануленного слева байта.
Строка 427 - Установка режима наложения (ИЛИ-ИСКЛЮЧАЮШЕЕ ИЛИ).
кодов - |
683 байта: |
|
|
|
|
|
|
|
C350 |
3A |
03 |
5B |
32 |
80 |
C4 |
CD |
B3 |
A1 |
C358 |
C4 |
00 |
00 |
00 |
00 |
47 |
C5 |
3A |
25 |
C360 |
80 |
C4 |
6F |
26 |
00 |
CD |
6A |
C4 |
F7 |
C368 |
EB |
68 |
26 |
00 |
CD |
6A |
C4 |
EB |
8A |
C370 |
A7 |
ED |
52 |
CD |
3A |
C4 |
2D |
2D |
3E |
C378 |
7D |
32 |
7F |
C4 |
47 |
3A |
01 |
5B |
0A |
C380 |
37 |
90 |
38 |
0C |
5F |
C1 |
C5 |
3A |
6D |
C388 |
02 |
5B |
80 |
4B |
47 |
CD |
81 |
C4 |
CC |
C390 |
37 |
3A |
7F |
C4 |
47 |
3A |
01 |
5B |
E4 |
C398 |
80 |
38 |
0C |
5F |
C1 |
C5 |
3A |
02 |
40 |
C3A0 |
5B |
80 |
4B |
47 |
CD |
81 |
C4 |
37 |
19 |
C3A8 |
3A |
7F |
C4 |
47 |
3A |
01 |
5B |
90 |
55 |
C3B0 |
38 |
0C |
5F |
C1 |
C5 |
3A |
02 |
5B |
33 |
C3B8 |
90 |
47 |
4B |
CD |
81 |
C4 |
37 |
3A |
20 |
C3C0 |
7 F |
C4 |
47 |
3A |
01 |
5B |
80 |
38 |
5B |
C3C8 |
0C |
5F |
C1 |
C5 |
3A |
02 |
5B |
90 |
A3 |
C3D0 |
47 |
4B |
CD |
81 |
C4 |
37 |
C1 |
C5 |
F4 |
C3D8 |
3A |
01 |
5B |
90 |
38 |
0E |
5F |
3A |
A0 |
C3E0 |
7 F |
C4 |
47 |
3A |
02 |
5B |
80 |
47 |
8B |
C3E8 |
4B |
CD |
81 |
C4 |
37 |
C1 |
C5 |
3A |
FF |
C3F0 |
01 |
5B |
90 |
38 |
0E |
5F |
3A |
7F |
FD |
C3F8 |
C4 |
47 |
3A |
02 |
5B |
90 |
47 |
4B |
7 F |
C400 |
CD |
81 |
C4 |
37 |
C1 |
C5 |
3A |
01 |
CE |
C408 |
5B |
80 |
5F |
38 |
0D |
3A |
7F |
C4 |
C8 |
C410 |
47 |
3A |
02 |
5B |
80 |
47 |
4B |
CD |
91 |
C418 |
81 |
C4 |
37 |
C1 |
C5 |
3A |
01 |
5B |
74 |
C420 |
80 |
5F |
38 |
0D |
3A |
7F |
C4 |
47 |
CC |
C428 |
3A |
02 |
5B |
90 |
47 |
4B |
CD |
81 |
F3 |
C430 |
C4 |
C1 |
05 |
78 |
FE |
FF |
C2 |
5E |
13 |
C438 |
C3 |
C9 |
C5 |
D5 |
DD |
E5 |
F5 |
DD |
B6 |
C440 |
21 |
24 |
C2 |
06 |
80 |
0E |
00 |
DD |
7C |
C448 |
5E |
00 |
DD |
56 |
01 |
DD |
23 |
DD |
7B |
C450 |
23 |
78 |
FE |
00 |
28 |
09 |
05 |
E5 |
C8 |
C458 |
37 |
ED |
52 |
E1 |
0C |
30 |
E8 |
79 |
10 |
C460 |
00 |
6F |
26 |
00 |
F1 |
DD |
E1 |
D1 |
39 |
C468 |
C1 |
C9 |
DD |
E5 |
D5 |
29 |
EB |
DD |
3E |
C470 |
21 |
24 |
C2 |
DD |
19 |
DD |
6E |
00 |
7C |
C478 |
DD |
66 |
01 |
D1 |
DD |
E1 |
C9 |
47 |
1F |
C480 |
48 |
51 |
58 |
78 |
FE |
B0 |
D0 |
3E |
69 |
C488 |
AF |
93 |
5F |
A7 |
1F |
37 |
1F |
A7 |
B0 |
C490 |
1F |
AB |
E6 |
F8 |
AB |
67 |
7A |
07 |
8 F |
C498 |
07 |
07 |
AB |
E6 |
C7 |
AB |
07 |
07 |
7B |
C4A0 |
6F |
7A |
E6 |
07 |
47 |
04 |
3E |
FE |
C1 |
C4A8 |
0F |
10 |
FD |
06 |
FF |
A8 |
47 |
7E |
FA |
C4B0 |
B0 |
77 |
C9 |
CD |
28 |
2D |
EF |
A2 |
17 |
C4B8 |
A3 |
04 |
1F |
04 |
38 |
CD |
D5 |
2D |
4D |
C4C0 |
47 |
C9 |
CD |
DF |
C5 |
3A |
03 |
5B |
9D |
C4C8 |
47 |
C5 |
68 |
26 |
00 |
CD |
6A |
C4 |
21 |
C4D0 |
EB |
3A |
03 |
5B |
6F |
26 |
00 |
CD |
79 |
C4D8 |
6A |
C4 |
A7 |
ED |
52 |
CD |
3A |
C4 |
7B |
C4E0 |
7D |
32 |
2E |
C5 |
3A |
2E |
C5 |
47 |
BA |
C4E8 |
3A |
01 |
5B |
90 |
DC |
1C |
C5 |
5F |
EE |
C4F0 |
32 |
2C |
C5 |
C1 |
C5 |
3A |
02 |
5B |
F4 |
C4F8 |
90 |
32 |
2D |
C5 |
4B |
47 |
CD |
31 |
00 |
C500 |
C5 |
C1 |
C5 |
3A |
02 |
5B |
80 |
47 |
6E |
C508 |
3A |
2C |
C5 |
4F |
04 |
CD |
31 |
C5 |
0E |
C510 |
C1 |
3A |
06 |
5B |
4F |
78 |
0C |
91 |
95 |
C518 |
47 |
30 |
AE |
C9 |
ED |
44 |
57 |
3A |
8D |
C520 |
2E |
C5 |
87 |
92 |
CB |
3F |
32 |
2E |
5B |
C528 |
C5 |
3E |
00 |
C9 |
64 |
55 |
1C |
04 |
92 |
C530 |
00 |
78 |
FE |
AF |
D0 |
51 |
58 |
3E |
D1 |
C538 |
AF |
93 |
5F |
A7 |
1F |
37 |
1F |
A7 |
61 |
C540 |
1F |
AB |
E6 |
F8 |
AB |
67 |
7A |
07 |
40 |
C548 |
07 |
07 |
AB |
E6 |
C7 |
AB |
07 |
07 |
2C |
C550 |
6F |
E5 |
01 |
FF |
57 |
A7 |
ED |
42 |
96 |
C558 |
38 |
02 |
E1 |
C9 |
E1 |
7C |
E6 |
07 |
4B |
C560 |
DD |
2A |
7B |
5C |
06 |
00 |
4F |
DD |
35 |
C568 |
09 |
3A |
05 |
5B |
87 |
87 |
87 |
4F |
B4 |
C570 |
DD |
09 |
DD |
7E |
00 |
32 |
04 |
5B |
07 |
C578 |
7A |
E6 |
07 |
47 |
04 |
32 |
2F |
C5 |
15 |
C580 |
3A |
2E |
C5 |
87 |
57 |
3A |
04 |
5B |
E9 |
C588 |
1E |
FE |
CB |
0B |
A3 |
10 |
FB |
AE |
9B |
C590 |
77 |
3A |
2F |
C5 |
47 |
3E |
08 |
90 |
17 |
C598 |
47 |
7A |
90 |
57 |
38 |
30 |
23 |
7D |
0D |
C5A0 |
E 6 |
1F |
D6 |
01 |
D8 |
7A |
D6 |
08 |
71 |
C5A8 |
38 |
0F |
57 |
3A |
04 |
5B |
AE |
77 |
C9 |
C5B0 |
23 |
7D |
E6 |
1F |
D6 |
01 |
D8 |
18 |
E1 |
C5B8 |
EC |
7A |
E6 |
07 |
47 |
3E |
08 |
90 |
ED |
C5C0 |
47 |
1E |
FE |
3A |
04 |
5B |
A3 |
CB |
EF |
C5C8 |
03 |
10 |
FB |
AE |
77 |
C9 |
7A |
C6 |
C9 |
C5D0 |
08 |
57 |
E6 |
07 |
47 |
1E |
FE |
7E |
C2 |
C5D8 |
A3 |
CB |
03 |
10 |
FB |
77 |
C9 |
3A |
93 |
C5E0 |
07 |
5B |
FE |
00 |
28 |
05 |
FE |
01 |
31 |
C5E8 |
28 |
0D |
C9 |
3E |
B6 |
32 |
8F |
C5 |
25 |
C5F0 |
32 |
AE |
C5 |
32 |
CB |
C5 |
C9 |
3E |
23 |
C5F8 |
AE |
18 |
F2 |
00 |
00 |
00 |
00 |
00 |
75 |
Демонстрационная БЕЙСИК-программа (автостарт со 2 строки):
1 GO TO 100
2 BORDER 7: PAPER 7: INK 0: CLEAR 4 9699:LOAD "data" CODE 4 9700
3 LOAD "circle" CODE 50000
4 FOR u=USR "a" TO USR "a"+7: POKE u,255: NEXT u: RUN 40 POKE 23297,x: POKE 23298,y: POKE 23299,r
45 RANDOMIZE USR 50000
49 RETURN
50 POKE 23297,x: POKE 23298,y: POKE 23299,r 55 RANDOMIZE USR 50370
59 RETURN
100 POKE 23302,0: POKE 23303,1: LET r=40
110 LET x=60: LET y=130: GO SUB 40
120 LET x=200: LET y=130: POKE 23301,0: GO SUB 50
130 LET x=60: LET y=40: POKE 23301,1: GO SUB 50
140 LET x=200: LET y=40: POKE 23301,0: GO SUB 50
150 LET x=200: LET y=40: POKE 23301,1: GO SUB 50_
Результат работы демонстрационной БЕЙСИК-программы Вы можете увидеть на рисунке. На этом заканчиваю. Может, кто и найдет другой способ черчения окружности и круга, более быстрый, ведь в "ЭЛИТЕ" же нашли!
|
|