Вход

Просмотр полной версии : Возможное ускорение CIRCLE



yevrowl
11.10.2025, 14:58
Знаю, конечно, что интерпретируемый Бейсик — та ещё тормозная колодка. Но круги рисует уж слишком медленно, а в моей программе этих геометрических фигур больше сотни. :confused_std:
Если ли способ ускорения, не требующий изучения ассемблера и тому подобных премудростей?

Shiny
11.10.2025, 16:24
алгоритм Брезенхема, наверное.

yevrowl
11.10.2025, 18:43
алгоритм Брезенхема, наверное.

Даже ромбы этот алгоритм (https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_% D0%91%D1%80%D0%B5%D0%B7%D0%B5%D0%BD%D1%85%D1%8D%D0 %BC%D0%B0) медленней рисует, чем DRAW, не говоря уже за круги...


1000 FOR Y=166 TO 10 STEP -12
1010 FOR X=11 TO 47 STEP 12
1020 GO SUB 2000
1030 NEXT X
1040 NEXT Y
1050 STOP
2000 LET A=0
2010 LET B=4
2020 LET C=3-2*4
2040 PLOT X+A,Y+B
2050 PLOT X-A,Y+B
2060 PLOT X+A,Y-B
2070 PLOT X-A,Y-B
2080 PLOT X+B,Y+A
2090 PLOT X-B,Y+A
2100 PLOT X+B,Y-A
2110 PLOT X-B,Y-A
2120 IF A>=B THEN RETURN
2130 IF C<0 THEN LET C=C+4*A+6
2140 IF C>=0 THEN LET C=C+4*(A-B)+10: LET B=B-1
2150 LET A=A+1
2160 GO TO 2040

Shiny
11.10.2025, 18:59
Даже ромбы этот алгоритм (https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_% D0%91%D1%80%D0%B5%D0%B7%D0%B5%D0%BD%D1%85%D1%8D%D0 %BC%D0%B0) медленней рисует, чем DRAW, не говоря уже за круги...

Этот алгоритм линии, а не окружности.
есть другой вариант:
http://members.chello.at/easyfilter/bresenham.html
или Minsky Circle:
https://zx-pk.ru/threads/35718-agon-light-dlya-nachinayushchikh.html?p=1197805&viewfull=1#post1197805

yevrowl
11.10.2025, 23:10
Учитывая, что большинство кружков состоит из 20 пикселей, перерисовал при помощи PLOT/DRAW, теперь выводится на экран гораздо быстрей.

Shiny
12.10.2025, 05:19
тогда Ассемблер в помощь.