Форум программистов, компьютерный форум, киберфорум
Assembler: математика, вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/179: Рейтинг темы: голосов - 179, средняя оценка - 4.59
S9
Волшебник
 Аватар для S9
656 / 259 / 88
Регистрация: 18.12.2010
Сообщений: 545

Вычисление квадратного корня

11.04.2011, 15:11. Показов 36797. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня! Подскажите WinAPI функцию для вычисления квадратного корня. Если можно то с примером.
Заранее всем очень благодарен))) Google мне не помог
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.04.2011, 15:11
Ответы с готовыми решениями:

Вычисление квадратного корня
Доброго времени суток! Необходимо реализовать вычисление квадратного корня из 36 по двум алгоритмам 1)1 36-1=35 2 35-3=32 3...

Вычисление квадратного корня из числа без использования сопроцессора
Помогите пожалуйста вычислить функцию корень из Х без использования сопра.

Ругается на вычисление корня
Пишет lllegal immediate на 23 и 25 строки. Что не так, подскажите, пожалуйста. .model small .stack 20h ; 6 bytes needed .data ...

13
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
11.04.2011, 15:18
Лучший ответ Сообщение было отмечено как решение

Решение

S9,
GOOGLE говоришь? а здесь искал?
нет такой WinAPI-функции, за то есть команда fsqrt
Assembler
1
2
3
4
5
6
7
8
.data
X dd 25;число из которого берем квадратный корень
result dd 0;место под результат
.code
finit;инициализируем FPU
fild X;выбрали число из памяти
fsqrt;получили квадратный корень
fist result
3
S9
Волшебник
 Аватар для S9
656 / 259 / 88
Регистрация: 18.12.2010
Сообщений: 545
11.04.2011, 17:38  [ТС]
Эта прога должна считать квадратное уравнение. Я сделал как сказал Mikl___, у меня все компильнулось но при попытке что-нибудь решить выдает еррор. В ассемблере я шарю не оч. поэтому буду очень признателен всем кто поможет заставить эту прогу работать))Пишу в MASM.Вот код который я писал для обработки нажатия кнопки(в коментариях я предполагаю что данный код будет делать)
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
invoke  GetDlgItemInt,hWnd,Edit1ID,0,1;текст из Edit1 в регистр eax и отуда в sA
mov sA,eax
invoke  GetDlgItemInt,hWnd,Edit2ID,0,1;Аналогично как и с Edit1
mov sB,eax
invoke  GetDlgItemInt,hWnd,Edit3ID,0,1
mov sC,eax
mov sB,eax;т.к. mul требует чтобы один из множителей находился в eax
mul sB;возводим sB в квадрат
mov kv,eax;записывает результат в переменную kv
mov eax,4;помещаем в eax число 4
mul sA;умножаем sA на 4
mul sC;и умножаем на sC (произведение sA и 4 в регистре eax)
sub eax,kv;вычитаем из kv(здесь находится sB^2) произведение 4*sA*sC(находится в eax)
mov Diskriminant,eax;Помещаем результат в Diskriminant
.IF Diskriminant == 0;если дисриминант ноль то
mov eax,-1;ставим перед sB минус умножив на -1
mul sB
mov ebx,sB;помещаем sB в регистор ebx
mov eax,2;2 в регистор eax
mul sA;умножаем sA на 2
div sB;делим sB на sA
invoke  wsprintf,addr MyText,addr Format,eax;т.к. x1 = x2 то выводим значения в Edit4 и Edit5
invoke  SetWindowText,hwndEdit4,addr MyText
invoke  SetWindowText,hwndEdit5,addr MyText
.ENDIF
.IF Diskriminant > 0;если дискриминант отличен от нуля то
finit;инициализируем FPU
fild Diskriminant;выбрали число из памяти
fsqrt;получили квадратный корень
fist result;записали результат в result
mov eax,-1;ставим перед sB минус умножив на -1
mul sB
mov ecx,eax
mov ebx,sB;помещаем sB в регистор ebx
mov eax,result
sub eax,sB;из sB вычитаем result
mov kv,eax;результат заносим в kv
mov eax,2
mul sA;посчитаем 2*sA
mov edx,eax
div kv
mov x1,eax
invoke wsprintf,addr MyText,addr Format,eax
invoke SetWindowText,hwndEdit4,addr MyText
add result,ebx;sB складываем с result
mov eax,edx
div result
mov x2,eax
invoke wsprintf,addr MyText,addr Format,eax
invoke SetWindowText,hwndEdit5,addr MyText
.ENDIF
.IF Diskriminant < 0
invoke MessageBox,hWnd,addr TextMessg,0,MB_ICONINFORMATION
.ENDIF
переменные следущие
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
Digit           dd 0
MyText          db 128 dup(0)
sA              dd 0
sB              dd 0
sC              dd 0
kv              dd 0
result          dd 0
Diskriminant    dd 0
Format          db "%d",0
x1              dd 0
x2              dd 0
TextMessg       db "Дискриминант меньше нуля!",0
Миниатюры
Вычисление квадратного корня  
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
12.04.2011, 05:14
S9, при использовании переменных со знаком необходимо вместо mul/div использовать imul/idiv и при расчете квадратного уравнения можно использовать FPU не только для расчета квадратного корня
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
.data
A DW ? ;место под коэффициенты
B DW ?
C DW ?
STATUS DW ?
FOUR DW 4.0 ;нам понадобятся две вещественные константы
TWO DW 2.0 ;FOUR=4,0 и TWO=2,0
ROOT1 DW ? ;место под 1-й корень уравнения
ROOT2 DW ?;место под 2-й корень уравнения
.code 
    FINIT ;инициализируем блок FPU
    FILD B ;загрузить число в регистр стека ST(0):=B
    FMUL ST(0) ;перемножить числа ST(0):=B^2
    FILD A ;загрузить число в регистр стека, ST(0):=A
    FMUL FOUR ;умножить число в ST(0) на 4.0, ST(0):=4*A
    FIMUL C ;умножить число в ST(0) на C, ST(0):=4*A*C
    FSUBRP ST(1),ST(0) ;вычитаем обратные целые числа
    FTST ;проверяем дискриминант на отрицательность
    FSTSW STATUS;записываем в память управляющий регистр FPU
    FWAIT; и переводим FPU в режим ожидания
    MOV AH,BYTE PTR STATUS+1;Читаем в AH
    SAHF; помещаем содержимое регистра AH в регистр флагов
    JB IMAGINARY;если корни мнимые переходим
    FSQRT ;извлекаем квадратный корень в ST(0):=SQRT(B^2-4*A*C)
    FLD ST(0) ;загрузить число из ST(0) в ST(1),   ST(1):=ST(0)
    FCHS ;изменяем знак, ST(0):=-SQRT(D)
    FIADD B;складываем целые числа ST(0):=B-SQRT(D)
    FCHS ;изменяем знак ST(0):= -B+SQRT(D)
    FXCH ST(1);обмениваемся данными между ST(0) и ST(1)
    FIADD B;складываем целые числа ST(0):=B+SQRT(D)
    FCHS ;изменяем знак, ST(0):= -B-SQRT(D)
    FIDIV A;делим на целое число ST(0):= -(B+SQRT(D))/A
    FDIV TWO;еще раз делим на 2, ST(0):=-(B+SQRT(D))/2A
    FST ROOT1;сохраняем в памяти 1-ый результат из ST(0)
    FIDIV A;делим на целое число ST(0):=(-B+SQRT(D))/A
    FDIV TWO ;делим на 2 ST(0):=(-B+SQRT(D))/2A
    FST ROOT2 ;сохраняем в памяти 2-ой результат
Кроме того нужно учитывать ситуацию когда А=0
2
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
12.04.2011, 09:08
Это решение квадратного уравнения под ДОС с вводом/выводом коэффициентов, смотри, разбирайся
Вложения
Тип файла: rar sqrt.rar (10.1 Кб, 223 просмотров)
2
S9
Волшебник
 Аватар для S9
656 / 259 / 88
Регистрация: 18.12.2010
Сообщений: 545
17.04.2011, 22:42  [ТС]
Что-то я не могу разобраться с этим кодом (т.е. не могу его приспособить для MASM)((((Если кто сможет переделать его на MASM, я был бы очень благодарен)

P.S. Если у кого есть исходник проги решающей квадратное уравнение на MASM то можете поделится исходником? Просто оч. надо
0
S9
Волшебник
 Аватар для S9
656 / 259 / 88
Регистрация: 18.12.2010
Сообщений: 545
18.04.2011, 04:12  [ТС]
Как смог написал, но помогите исправить 2 ошибки
строка 29 "coprocessor register cannot be first operand"
строка 35 "invalid instriction operands"
Делал на основе кода Mikl___

Знатоки ассемблера - доделайте пожайлуста, а то у меня от ассемблера щас башка взорвется...

Заранее спасибо всем откликнувшимся

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Digit           dd 0
Temp            dd 0
MyText          db 128 dup(0)
Diskriminant    dd 0
Format          db "%d",0
x1              db 0
x2              db 0
iA              dd 5
iB              dd 4
iC              dd 3
TextMessg       db "Дискриминант меньше нуля!",0
STATUS DD ?
FOUR DD 4.0 ;нам понадобятся две вещественные константы
TWO DD 2.0 ;FOUR=4,0 и TWO=2,0
ROOT1 DD ? ;место под 1-й корень уравнения
ROOT2 DD ?;место под 2-й корень уравнения
 
 
        INVOKE  GetDlgItemInt,hWnd,Edit1ID,0,1;текст из Edit1 в регистр eax и отуда в sA
    MOV iA,eax
    INVOKE  GetDlgItemInt,hWnd,Edit2ID,0,1;Аналогично как и с Edit1
    MOV iB,eax
    PUSH iB;
    INVOKE  GetDlgItemInt,hWnd,Edit3ID,0,1
    MOV iC,eax
    FINIT ;инициализируем блок FPU
    FILD iB ;загрузить число в регистр стека ST(0):=B
    FMUL ST(0) ;перемножить числа ST(0):=B^2
    FILD iA ;загрузить число в регистр стека, ST(0):=A
    FMUL FOUR ;умножить число в ST(0) на 4.0, ST(0):=4*A
    FIMUL iC ;умножить число в ST(0) на C, ST(0):=4*A*C
    FSUBRP ST(1),ST(0) ;вычитаем обратные целые числа
    FTST ;проверяем дискриминант на отрицательность
    FSTSW STATUS;записываем в память управляющий регистр FPU
    FWAIT; и переводим FPU в режим ожидания
    MOV AH,BYTE PTR STATUS+1;Читаем в AH
    SAHF; помещаем содержимое регистра AH в регистр флагов
    JB IMAGINARY;если корни мнимые переходим
    FSQRT ;извлекаем квадратный корень в ST(0):=SQRT(B^2-4*A*C)
    FLD ST(0) ;загрузить число из ST(0) в ST(1),   ST(1):=ST(0)
    FCHS ;изменяем знак, ST(0):=-SQRT(D)
    FIADD iB;складываем целые числа ST(0):=B-SQRT(D)
    FCHS ;изменяем знак ST(0):= -B+SQRT(D)
    FXCH ST(1);обмениваемся данными между ST(0) и ST(1)
    FIADD iB;складываем целые числа ST(0):=B+SQRT(D)
    FCHS ;изменяем знак, ST(0):= -B-SQRT(D)
    FIDIV iA;делим на целое число ST(0):= -(B+SQRT(D))/A
    FDIV TWO;еще раз делим на 2, ST(0):=-(B+SQRT(D))/2A
    FST ROOT1;сохраняем в памяти 1-ый результат из ST(0)
    invoke  wsprintf,addr MyText,addr Format,eax 
    invoke  SetWindowText,hwndEdit4,addr MyText
    FIDIV iA;делим на целое число ST(0):=(-B+SQRT(D))/A
    FDIV TWO ;делим на 2 ST(0):=(-B+SQRT(D))/2A
    FST ROOT2 ;сохраняем в памяти 2-ой результат
    invoke  wsprintf,addr MyText,addr Format,eax 
    invoke  SetWindowText,hwndEdit5,addr MyText
    IMAGINARY:
    invoke MessageBox,hWnd,addr TextMessg,0,MB_ICONINFORMATION
Вложения
Тип файла: rar FILE.rar (7.3 Кб, 36 просмотров)
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
18.04.2011, 05:03
S9, почему-то у меня башка не взрывается вылавливать чужие ошибки
1) ошибка "строка 35 "invalid instriction operands" FSTSW STATUS смотрим как переменная STATUS определена у меня STATUS DW ? и как она определена у тебя STATUS DD ?
2) попробуй везде где у меня написано st(0) поставить просто st
1
S9
Волшебник
 Аватар для S9
656 / 259 / 88
Регистрация: 18.12.2010
Сообщений: 545
18.04.2011, 08:41  [ТС]
Извини конечно за наглость, но 1 ошибка устранилась, в 2 никак не хочет(((Замена ST(0) на ST ничего не изменила

Добавлено через 12 минут
я заменил строчку 29 так
Assembler
1
2
3
4
MOV EAX,iB
    MOV Temp,EAX
    IMUL Temp
    FILD iB
и y меня все компильнулось, но прога считает уравнение неправильно((Как быть?
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
18.04.2011, 08:58
S9, по твоему листингу "строка 29 "coprocessor register cannot be first operand" ошибка ссылается на какую строку, приведи содержимое строки полностью,
по поводу последних строк "MOV EAX,iB/ MOV Temp,EAX/ IMUL Temp/ FILD iB" не смешивай теплое с мягким (божий дар с яичницей) пусть все расчеты идут на FPU как у меня в оригинале
1
S9
Волшебник
 Аватар для S9
656 / 259 / 88
Регистрация: 18.12.2010
Сообщений: 545
18.04.2011, 09:09  [ТС]
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
    Digit           dd 0
Temp            dd 0
MyText          db 128 dup(0)
Diskriminant    dd 0
Format          db "%d",0
x1              db 0
x2              db 0
iA              dd 5
iB              dd 4
iC              dd 3
TextMessg       db "Дискриминант меньше нуля!",0
STATUS DW ?
FOUR DD 4.0 ;нам понадобятся две вещественные константы
TWO DD 2.0 ;FOUR=4,0 и TWO=2,0
ROOT1 DD ? ;место под 1-й корень уравнения
ROOT2 DD ?;место под 2-й корень уравнения
 
;---------------------------------------------                            
 
 
.IF ax == BN_CLICKED
                    INVOKE  GetDlgItemInt,hWnd,Edit1ID,0,1;текст из Edit1 в регистр eax и отуда в sA
                    MOV iA,eax
                    INVOKE  GetDlgItemInt,hWnd,Edit2ID,0,1;Аналогично как и с Edit1
                    MOV iB,eax
                    PUSH iB;
                    INVOKE  GetDlgItemInt,hWnd,Edit3ID,0,1
                    MOV iC,eax
                    FINIT ;инициализируем блок FPU
                    FILD iB ;загрузить число в регистр стека ST(0):=B
                    FMUL ST(0);перемножить числа ST(0):=B^2
                    FILD iB
                    FILD iA ;загрузить число в регистр стека, ST(0):=A
                    FMUL FOUR ;умножить число в ST(0) на 4.0, ST(0):=4*A
                    FIMUL iC ;умножить число в ST(0) на C, ST(0):=4*A*C
                    FSUBRP ST(1),ST(0) ;вычитаем обратные целые числа
                    FTST ;проверяем дискриминант на отрицательность
                    FSTSW STATUS;записываем в память управляющий регистр FPU
                    FWAIT; и переводим FPU в режим ожидания
                    MOV AH,BYTE PTR STATUS+1;Читаем в AH
                    SAHF; помещаем содержимое регистра AH в регистр флагов
                    JB IMAGINARY;если корни мнимые переходим
                    FSQRT ;извлекаем квадратный корень в ST(0):=SQRT(B^2-4*A*C)
                    FLD ST(0) ;загрузить число из ST(0) в ST(1),   ST(1):=ST(0)
                    FCHS ;изменяем знак, ST(0):=-SQRT(D)
                    FIADD iB;складываем целые числа ST(0):=B-SQRT(D)
                    FCHS ;изменяем знак ST(0):= -B+SQRT(D)
                    FXCH ST(1);обмениваемся данными между ST(0) и ST(1)
                    FIADD iB;складываем целые числа ST(0):=B+SQRT(D)
                    FCHS ;изменяем знак, ST(0):= -B-SQRT(D)
                    FIDIV iA;делим на целое число ST(0):= -(B+SQRT(D))/A
                    FDIV TWO;еще раз делим на 2, ST(0):=-(B+SQRT(D))/2A
                    FST ROOT1;сохраняем в памяти 1-ый результат из ST(0)
                    invoke  wsprintf,addr MyText,addr Format,eax 
                    invoke  SetWindowText,hwndEdit4,addr MyText
                    FIDIV iA;делим на целое число ST(0):=(-B+SQRT(D))/A
                    FDIV TWO ;делим на 2 ST(0):=(-B+SQRT(D))/2A
                    FST ROOT2 ;сохраняем в памяти 2-ой результат
                    invoke  wsprintf,addr MyText,addr Format,eax 
                    invoke  SetWindowText,hwndEdit5,addr MyText
                    IMAGINARY:
                        invoke MessageBox,hWnd,addr TextMessg,0,MB_ICONINFORMATION
                    .ELSE
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
18.04.2011, 13:51
S9, если ты решил получить целые корни квадратного уравнения то пиши FIST ROOT1
FIST ROOT2
так как вещественные числа wsprintf выводит неверно и должно быть
Assembler
1
2
3
4
5
 
Format          db "X1=%d, X2=%d",0
. . .
invoke  wsprintf,addr MyText,addr Format,ROOT2,ROOT1
add esp,16
Выводи ответ за один раз, а не за два раза и после wsprintf нужно самому очищать стек от аргументов, функция этого не делает
1
S9
Волшебник
 Аватар для S9
656 / 259 / 88
Регистрация: 18.12.2010
Сообщений: 545
18.04.2011, 22:26  [ТС]
Извиняюсь снова за тупость, но с 60 по 62 строчку (предыдущая мессага) я заменил так
Assembler
1
2
3
4
5
6
Format          db "X1=%d, X2=%d",0
...
INVOKE  wsprintf,ADDR MyText,ADDR Format,ROOT2,ROOT1
ADD ESP,16 
INVOKE  SetWindowText,hwndEdit4,ADDR MyText
INVOKE  SetWindowText,hwndEdit5,ADDR MyText
и все равно ничего нет.

А как быть с FMUL ST(0) ? Ругается типа ST(0) там не может быть

Очистить стек, это написать что-то вроде XOR EAX,EAX?
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
19.04.2011, 04:33
S9,
1) xor eax,eax -- это поместить в регистр EAX ноль -- регистры и стек это две большие разницы.
2) Когда ты пользуешься API-функциями, то аргументы этим функциям передаешь через стек -- например MessageBox получает через стек всегда четыре аргумента, то есть в стек попадает 4х4 байт, но так как стек не безграничен, каждая API-функция при выходе очищает стек от своих аргументов, если "распотрошить" MessageBox, то видно, что функция заканчивается на RETN 16. Количество аргументов у wsprintf может быть любым -- поэтому при использовании именно wsprintf на программиста ложится обязанность очищать стек после себя, в моем примере после вызова wsprintf стоит команда
ADD ESP,4*4
4 - количество аргументов, 4 - количество байт занимаемое каждым аргументом.
3) для возведения в квадрат напиши FMUL ST,ST
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.04.2011, 04:33
Помогаю со студенческими работами здесь

Итеративное вычисление корня сопроцессором
Здравствуйте, уважаемые. Необходимо сопроцессором вычислить квадратный корень положительного целого числа, имеется формула Xn+1=(1/2)*(Xn+...

Вычисление квадратного корня
Написал программу, встрял на формуле, решаю задачу на вершины треугольника. C# - Консольное Приложение. как это написать в программе? ...

Вычисление квадратного корня
Доброе время суток форумчани, я не как не могу разобраться как найти ошибку корня, вот такая задача у меня есть уравнение...

Вычисление квадратного корня
я уже смотрел на форуме, какой у квадратного корня алгоритм. В основу моего алгоритма тоже положен метод касательных. Но! У моего...

Вычисление квадратного корня
Подскажите пожалуйста,нужно написать функцию,вычисляющую корень из числа с точностью до тысячных или выше.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru