Учимся рисовать круг!

[ Версия для печати ]
Добавить в Telegram Добавить в Twitter Добавить в Вконтакте Добавить в Одноклассники
Страницы: (7) « Первая ... 5 6 [7]   К последнему непрочитанному [ ОТВЕТИТЬ ] [ НОВАЯ ТЕМА ]
romanospro
2.03.2021 - 13:24
0
Статус: Offline


Приколист

Регистрация: 8.07.17
Сообщений: 287
про сову есть такое же?
 
[^]
IltaTytor
19.02.2022 - 19:39
0
Статус: Offline


Шутник

Регистрация: 19.02.22
Сообщений: 1
Не буду показывать свой результат, потому что мои руки точно для рисования круга не приспособлены...
 
[^]
drakon123
12.03.2022 - 00:47
0
Статус: Offline


Ярила

Регистрация: 15.07.14
Сообщений: 1043
Кто скажет, что это не мальчик, пусть кинет в меня камень

Размещено через приложение ЯПлакалъ

Учимся рисовать круг!
 
[^]
VadimNadym
27.05.2022 - 03:53
0
Статус: Offline


Шутник

Регистрация: 27.05.22
Сообщений: 77
⭕️ My best circle is 97.2% perfect, can you beat that?
https://vole.wtf/perfect-circle/

Размещено через приложение ЯПлакалъ
 
[^]
oldcrazydad
27.05.2022 - 03:55
0
Статус: Offline


Философ-похуист

Регистрация: 27.07.14
Сообщений: 9254
Цитата
Учимся рисовать круг!

Таки, может, окружность?
 
[^]
Richi
27.05.2022 - 04:06
0
Статус: Offline


Ярила

Регистрация: 30.03.10
Сообщений: 3034
ТС , moderator.gif

Сижу как дебил , в шесть утра кружочки ,блеать , рисую ! mad.gif

З.Ы. Не , неинтересно , я решение придумал , тут же сразу с 85 до 94 дошел . Минут десять посидеть и мултьик увижу , как Лена сказала . shum_lol.gif Но уже скучно.

Это сообщение отредактировал Richi - 27.05.2022 - 04:14
 
[^]
WestAlarih
27.05.2022 - 04:23
0
Статус: Offline


Шутник

Регистрация: 13.03.16
Сообщений: 11


Размещено через приложение ЯПлакалъ

Учимся рисовать круг!
 
[^]
Travolda
3.11.2022 - 10:54
0
Статус: Offline


Ярила

Регистрация: 20.05.09
Сообщений: 10744
Рисование в бейсике круга( но большой код и не все языки это понимают)

Рисование закрашенной окружности:
CIRCLE (X, Y), R, C
PAINT (X, Y), C1, C2.
Здесь PAINT - оператор закрашивания. X,Y - координаты точки внутри закрашиваемой области, C1 - цвет закрашивания, C2 - цвет линии границы.
Пример:

CIRCLE (160, 130), 50, 13
PAINT (160, 110), 11, 13

Рисование в ассемблере круга
(код короткий и все языки это понимают)
.286
.model tiny
.code
ORG 100h

RADIUS EQU 99 ;рисуем окружность с радиусом 99
RADIUS2 EQU RADIUS*RADIUS ;квадрат радиуса
DIAMETR EQU RADIUS*2 ;диаметр окружности
N EQU 157*RADIUS/200;количество точек на 1/8
COLOR EQU 10 ;цвет окружности
start: MOV AH,0Fh ;узнать номер текущего видеорежима
INT 10h
MOV VIDEOR,AL ;запомним текущий видеорежим
MOV AX,13h;установить видеорежим 320х200х256
INT 10h
PUSH 0A000h;установить регистр ES на сегмент
POP ES ; видеопамяти
XOR BP,BP ;будем увеличивать X и Y
MOV Y,RADIUS-1 ;координаты X=0 и Y=R
CALL DRAW_OCT1 ;рисуем восьмушку окружности
MOV BP,RADIUS-1 ;координата X=2*R
MOV Y,0 ;координата Y=0
CALL DRAW_OCT2 ;рисуем восьмушку окружности
NEG DELTA_X ;увеличиваем Y и уменьшаем X
MOV Y,RADIUS
MOV BP,DIAMETR ;координаты Y=R и X=2*R
CALL DRAW_OCT1 ;рисуем восьмушку окружности
MOV BP,RADIUS ;координата X=R
MOV Y,0 ;координата Y=0
CALL DRAW_OCT2 ;рисуем восьмушку окружности
NEG DELTA_Y ;уменьшаем координаты Y и X
MOV Y,RADIUS ;координата Y=R
MOV BP,DIAMETR ;координата X=2*R
CALL DRAW_OCT1 ;рисуем восьмушку окружности
MOV BP,RADIUS ;координата X=R
MOV Y,DIAMETR ;координата Y=2*R
CALL DRAW_OCT2 ;рисуем восьмушку окружности
NEG DELTA_X ; уменьшаем Y и увеличиваем X
XOR BP,BP ;координата X=0
MOV Y,RADIUS ;координата Y=R
CALL DRAW_OCT1 ;рисуем восьмушку окружности
MOV BP,RADIUS ;координата X=R
MOV Y,DIAMETR ;координата Y=2*R
CALL DRAW_OCT2 ;рисуем восьмушку окружности
XOR AX,AX ;ожидание нажатия любой клавиши
INT 16h
MOV AX,WORD PTR VIDEOR;восстановление видеорежима
INT 10h
RET ;выход из программы
DELTA_CALC PROC ;рассчитаем ошибку накопления
MOV BX,AX ;в AX значение координаты X или Y
DEC AX ;вычислим (Y+0,5)2 Y2+Y
MUL AX ;или (X+0,5)2 X2+X
ADD AX,BX
MOV DELTA,AX ;и поместим это значение в DELTA
RET
DELTA_CALC ENDP
;процедура прорисовки 1/8 окружности с вычислением
DRAW_OCT1 PROC ; координаты X
MOV AX,Y
SHL AX,6 ;должно быть DI=Y*320, но для умножения
MOV DI,AX ;на 320 используем сдвиги, AX= Y*64,
SHL AX,2 ;сохраним AX в DI и умножим Y*64 на 4
ADD DI,AX ;DI=Y*(256+64)=Y*320.
MOV AX,BP
SUB AX,RADIUS ;BP=X AX=R-X
CALL DELTA_CALC ;расчет ошибки накопления по X
MOV CX,N
CIRC1: MOV AX,Y
SUB AX,RADIUS ;AX=Y-R
MUL AX
NEG AX
ADD AX,RADIUS2 ;AX=R2-Y2
CMP DELTA,AX ;сравнить текущий X2=R2-Y2 с ошибкой
JBE A3 ;накопления, если меньше, увеличиваем или
ADD BP,DELTA_X;уменьшаем только Y, иначе
MOV AX,BP;увеличиваем или уменьшаем еще и X и
SUB AX,RADIUS; вычисляем новую ошибку накопления
CALL DELTA_CALC
A3: CMP DELTA_Y,1
JNE A1
ADD DI,320
JMP SHORT A2
A1: SUB DI,320
A2: MOV BYTE PTR ES:[DI][BP],COLOR;выводим точку на
MOV AX,DELTA_Y; экран
ADD Y,AX
LOOP CIRC1 ;повторяем цикл
RET
DRAW_OCT1 ENDP
;процедура прорисовки 1/8 окружности с вычислением
DRAW_OCT2 PROC ; координаты X
MOV AX,Y
SHL AX,6 ;должно быть DI=Y*320, но для умножения
MOV DI,AX ;на 320 используем сдвиги, AX= Y*64,
SHL AX,2 ;сохраним AX в DI и умножим Y*64 на 4
ADD DI,AX ;DI=Y*(256+64)=Y*320.
MOV AX, Y
SUB AX,RADIUS
CALL DELTA_CALC
MOV CX,N
CIRC2: MOV AX,BP
SUB AX,RADIUS
MUL AX
NEG AX
ADD AX,RADIUS2 ;AX=R2-(X-R)2
CMP DELTA,AX
JBE A5
MOV AX,DELTA_Y
ADD Y,AX
MOV AX,Y
SUB AX,RADIUS
CALL DELTA_CALC
CMP DELTA_Y,1
JNE A4
ADD DI,320
JMP SHORT A5
A4: SUB DI,320
A5: ADD BP,DELTA_X
MOV BYTE PTR ES:[DI][BP],COLOR
LOOP CIRC2
RET
DRAW_OCT2 ENDP
VIDEOR DB 0,0 ;значение текущего видеорежима
DELTA DW 0 ;ошибка накопления
DELTA_X DW 1 ;смещение по оси X
DELTA_Y DW 1 ;смещение по оси Y
Y DW 0 ;координата Y
END start

Это сообщение отредактировал Travolda - 3.11.2022 - 10:55
 
[^]
ЕвгенийД
7.03.2023 - 18:12
0
Статус: Offline


Приколист

Регистрация: 3.08.19
Сообщений: 268


Размещено через приложение ЯПлакалъ

Учимся рисовать круг!
 
[^]
DAZ57
7.03.2023 - 18:14
0
Статус: Offline


Балагур

Регистрация: 24.09.14
Сообщений: 866
бля, руками не могу. мпх идеальный желтый круг выводит, только не выложить его тут
 
[^]
Nitromaster
12.03.2024 - 17:55
0
Статус: Offline


Весельчак

Регистрация: 24.01.18
Сообщений: 107
моего круга нету, а я рисовал

Это сообщение отредактировал Nitromaster - 12.03.2024 - 17:57
 
[^]
Nitromaster
12.03.2024 - 17:55
0
Статус: Offline


Весельчак

Регистрация: 24.01.18
Сообщений: 107
bravo.gif
 
[^]
Понравился пост? Еще больше интересного в Телеграм-канале ЯПлакалъ!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста, или зарегистрируйтесь, если не зарегистрированы.
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) Просмотры темы: 49628
0 Пользователей:
Страницы: (7) « Первая ... 5 6 [7]  [ ОТВЕТИТЬ ] [ НОВАЯ ТЕМА ]


 
 



Активные темы






Наверх