Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/41: Рейтинг темы: голосов - 41, средняя оценка - 4.80
 Аватар для dexter007
4 / 4 / 0
Регистрация: 10.10.2012
Сообщений: 27

Разбить изображения на 20 ровных сектора и подсчитать количество черных пикселов в каждом из найденых секторов

18.03.2015, 09:41. Показов 8476. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Задача заключается в следующем. Нужно разбить изображение на 20 равных частей (на картинках показано как нужно разбить). В каждой части подсчитать количество черных пикселей(какой процент черных пикселей приходится на эту область). и вывести на экран. Подскажите пожалуйста джуниору как разбить изображение таким образом. Буду очень благодарен любой помощи.
Миниатюры
Разбить изображения на 20 ровных сектора и подсчитать количество черных пикселов в каждом из найденых секторов  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.03.2015, 09:41
Ответы с готовыми решениями:

Переназначенные сектора, нестабильные сектора и неисправимые ошибки секторов
Решил я как то проверить с помощью Crystal Disk Info и на те сразу три ошибки. Насколько это опасно и можно ли их исправить?

Для матрицы подсчитать количество элементов, меньших нуля, ровных нулю и больших нуля
Для заданной матрицы A подсчитать количество элементов, меньших нуля, ровных нулю и больших нуля. Для вывода результатов использовать...

Разбить область на сектора. Цвет нарисованной линии должен зависеть от сектора
Форма делится на сектора (их количество задает пользователь). Курсором мыши можно рисовать линии. Цвет линии зависит от сектора. При...

34
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
18.03.2015, 15:42
Регионами, может быть? Наделать треугольных регионов, а потом выяснять для каждого пикселя изображения, в каком он регионе(PtInRegion) - и щелкать соответствующие счетчики цветов по регионам.
Громоздко, медленно, неэффективно - но самое легкое, что в голову пришло.
1
 Аватар для dexter007
4 / 4 / 0
Регистрация: 10.10.2012
Сообщений: 27
18.03.2015, 15:59  [ТС]
Каким способом делать НЕ уточнялось. Думаю любым .Главное чтобы можно разделить изображение на 20 частей, узнать сколько черных точек в каждой части (таким образом я найду вектор признаков). После этого нужно этот вектор признаков использовать в методе группового учета аргумента, но не об этом сейчас. Меня интересует только вектор признаков. Если регионами можно сделать - супер. Подскажите пожалуйста, где доступно о них написано. PS: а можно разбить регионами еще и на одинаковые прямоугольники?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
18.03.2015, 16:13
Хоть на прямоугольники, хоть на многоугольники, хоть как можно. Подробно есть в справке малокософта - Region Functions

Добавлено через 58 секунд
Ну, и вот еще - https://msdn.microsoft.com/en-... s.85).aspx
1
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,014
18.03.2015, 17:15
"Разбиение без регионов":
C++
1
2
3
4
5
6
7
8
9
  const n = 20;
  Word w = Image1->Width, h = Image1->Height;
  Word max = w > h ? w : h;
  Image1->Canvas->Pen->Color = clRed;
  for (Byte i = 0; i < n; i++)
  {
    Image1->Canvas->MoveTo(w/2 + 1, h/2 + 1);
    Image1->Canvas->LineTo(w/2 + 1 + max * cos(2*M_PI*i/n) + 1, h/2 + 1 + max * sin(2*M_PI*i/n) + 1);
  }
В этом случае подсчет пикселей можно сделать с помощью ScanLine и проверки на цвет пикселя.
И применить метод, аналогичный используемому в PtInRegion (на "области" разбили, осталось добавить проверку на принадлежность точки конкретной "области").
Миниатюры
Разбить изображения на 20 ровных сектора и подсчитать количество черных пикселов в каждом из найденых секторов  
2
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
18.03.2015, 17:27
Цитата Сообщение от gunslinger Посмотреть сообщение
И применить метод, аналогичный используемому в PtInRegion (на "области" разбили, осталось добавить проверку на принадлежность к "области").
Остается только придумать - как.
Индексировать лучи по углу поворота, мб? Потом смотреть на угол поворота прямой, построенной по проверяемой точке и центру. Тогда и рисовать лучи ни к чему в общем-то.
1
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,014
18.03.2015, 17:32
Ну да, рисовать в итоге не обязательно. Линии нужны лишь для "понимания".
1
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
18.03.2015, 18:52
Можно так сделать эффективнее (уменьшив кол-во проверок на номер региона):
- Разбить на регионы
- В цикле проверять цвет каждой точки.
Если цвет черный, то определить, к какому региону относится эта точка. Зная координаты точки с черным цветом, мы можем залить эту область с помощью FloodFill цветом, который соответствует номеру региона.
А цвет последующих точек (цвет которых был изменен с помощью FloodFill) просто проверять на соответствие номеру региона.
1
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,014
19.03.2015, 22:32
Лучший ответ Сообщение было отмечено BRcr как решение

Решение

Не стал заморачиваться с условием проверки пикселей при разбиении изображения на сектора (голова не настроена думать), сделал через регионы.
Пример разбиения:
C++
1
2
3
4
5
6
7
8
9
10
  Image1->Canvas->Pen->Color = clRed;
  for (Byte i = 1; i <= n/2; i++)
  {
    Image1->Canvas->MoveTo(0, h/10*i);
    Image1->Canvas->LineTo(w, h/10*i);
    Image1->Canvas->TextOutW(w/4, h/10*i-h/20, i*2-1);
    Image1->Canvas->TextOutW(w*3/4, h/10*i-h/20, i*2);
  }
  Image1->Canvas->MoveTo(w/2, 0);
  Image1->Canvas->LineTo(w/2, h);


ScanLine не понадобилась (цвет пикселей не меняется).
C++
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
  const n = 20;
  Word i, j;
  Word w = Image1->Width, h = Image1->Height, l = Image1->Left, t = Image1->Top;
 
  HRGN region[n];
  for (j = 0; j < n/2; j++)
    for (i = 0; i < n/10; i++)
      region[i+j*2] = CreateRectRgn(Left + (Width-ClientWidth)/2 + l + w*i/2, Top +
      Height-ClientHeight-(Width-ClientWidth)/2 + t + h*j/10, Left + (Width-ClientWidth)/2 +
      l + w*(i+1)/2, Top + Height-ClientHeight-(Width-ClientWidth)/2 + t + h*(j+1)/10);
 
//  for (i = 0; i < n; i++)
//  PaintRgn(GetDC(0), region[i]);  // отрисовка регионов (для проверки расположения областей)
 
  Byte k;
  unsigned __int64 point_count[n] = {0}, points_count = 0;
  for(j = 0; j < h; j++)
    for (i = 0; i < w; i++)
      if (Image1->Canvas->Pixels[i][j] == clBlack)
      {
        points_count++;
        for (k = 0; k < n; k++)
          if (PtInRegion(region[k], Left + (Width-ClientWidth)/2 + l + i, Top + Height-ClientHeight-(Width-ClientWidth)/2 + t + j))
            point_count[k]++;
      }
 
  String res = "Регион: кол-во черных пикселей\n";
  unsigned __int64 sum = 0;
  for (i = 0; i < n; i++)
  {
    res += String(i+1) + ": " + String(point_count[i]) + "\n";
    sum += point_count[i];
  }
  ShowMessage(res + "Всего черных пикселей: " + String(points_count) + " (проверка: " + String(sum) + ").");
 
  for (i = 0; i < n; i++)
    DeleteObject(region[i]);
Код можно немного упростить (создание регионов и проверка на принадлежность точек областям).

Результат:
Миниатюры
Разбить изображения на 20 ровных сектора и подсчитать количество черных пикселов в каждом из найденых секторов   Разбить изображения на 20 ровных сектора и подсчитать количество черных пикселов в каждом из найденых секторов  
2
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,014
19.03.2015, 22:50
Подсчитать проценты (отношение кол-ва черных пикселей в общему числу точек в каждом регионе) - совсем уж тривиальная задача. Пусть ТС хоть что-то сам сделает.
0
 Аватар для dexter007
4 / 4 / 0
Регистрация: 10.10.2012
Сообщений: 27
30.03.2015, 22:11  [ТС]
Я конечно очень благодарен за ваши старания, но меня больше интересует как разбить изображение на одинаковые сектора (n - штук например), а не на одинаковые квадраты) если есть идеи, с удовольствием выслушаю профи
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
30.03.2015, 22:18
Последний код gunslinger разбивает изображение именно на одинаковые сектора. В количестве 20-и штук. Вероятно, следует уточнить, чего нужно достичь.
0
 Аватар для dexter007
4 / 4 / 0
Регистрация: 10.10.2012
Сообщений: 27
30.03.2015, 22:50  [ТС]
На картинке нарисовано, что в первом случае центр разбиение должно быть в верхнем левом углу, в следующем случае центр разбиения должен быть в центре картинки. Ну и в конце разбить изображение на одинаковые 20 (или н) частей. Например: входные данные - картинка, число н (на сколько частей нужно разбить) и варианты разбиения. То есть загрузил картинку, записал в едит число 20 и нажал кнопу "разбить изображение на н одинаковых частей с центром разбиение в верхнем левом углу и получить вектор признаков (типа значение черных точек с каждого полученного треугольника, который образовался при разбивке)", далее нажимаю кнопку "разбить изображение на 20 (или н) НО уже центр разбиения должен быть в центре картинки", вновь получил вектор признаков. (Сравниваем полученные значения из двух методов. Вывел на экран образованные массивы

Добавлено через 10 минут
преподаватель сказал что это должно делаться как-то по углам. типа имею картинку, есть число на которое нужно разбить картинку. Разделил 360гр на число разбиения. Образовался угол. И в соответствии с этим угла нужно разбивать картинку и получать вектор признаков. Как именно это сделать он не сказал (возможно и сам не знает). Поэтому решил написать сюда, может в кто-то делал что-то подобное, поделится знаниями или кодом. Как-никак у вас больше опыта чем у меня.
1
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,014
31.03.2015, 12:23
А к чему было упоминание про прямоугольники?
Пост №5 - разбиение на сектора, точка в центре. Кол-во секторов задается.
Переделать под вариант, когда точка слева вверху (или где-то еще), не требует наличия IQ выше среднего.
Пост №9 - разбиение на регионы с подсчетом точек.
Объединяем то, что есть в этих постах, и разбиваем, как нам угодно. Вплоть до секторов с использованием регионов.
За время, пока ТС отсутствовал, можно было всё это сделать, попивая пиво, ковыряясь в носу и тратя максимум полчаса времени в день.
К готовому решению нужно самому учиться приходить. Тем более вся необходимая информация имеется.
Если кто хочет преподнести полностью код "под ключ", услышать благодарность и успеть краем глаза заметить, как автор испаряется со скоростью, близкой к сверхзвуковой, поднимая клубы пыли, то, как говорится, "велкам".
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
31.03.2015, 16:21
Лучший ответ Сообщение было отмечено dexter007 как решение

Решение

Значит решение в лоб: попиксельный проход всей картинки и нахождение сектора для каждого пикселя.
Можно наверное от обратного сплясать - найти четыре (или сколько там) линии, ограничивающие сектор и перемещаться уже только среди них. Скорость возрастет в несколько раз.
P.S. Точность метода оставляет желать погребения. И при абсурдно малых количествах секторов тоже ведет себя некорректно.
P.P.S. Код расчленения рисунка лихо сворован у gunslinger. Не очень я там понял коэффициенты, но разбираться лень. Можно впринципе там чего-нибудь еще подшаманить тригонометрически.

C++
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <math.h>
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
Graphics::TBitmap *bitmap;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
TRect Rect( 0, 0, Image1->Width, Image1->Height );
 
bitmap = new Graphics::TBitmap;
bitmap->Width = Rect.Width();
bitmap->Height = Rect.Height();
 
bitmap->Canvas->CopyRect( Rect, Image1->Canvas, Rect );
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Memo1->Clear();
TRect Rect( 0, 0, Image1->Width, Image1->Height );
Image1->Canvas->CopyRect( Rect, bitmap->Canvas, Rect );
 
 
  int n = Edit1->Text.ToIntDef( 0 );
 
  unsigned int w = Image1->Width, h = Image1->Height;
  unsigned int max = w > h ? w : h;
  Image1->Canvas->Pen->Color = clRed;
  for( Byte i = 0; i < n; i++ )
    {
    Image1->Canvas->MoveTo( w/2, h/2 );
    Image1->Canvas->LineTo( w/2 + max * cos(2*M_PI*i/n), h/2 + max * sin(2*M_PI*i/n) );
    }
 
 
int *ArrTriangle = new int[n];
memset( ArrTriangle, 0, n*sizeof( int ) );
 
const TColor ColorFont = clBlack,
             ColorBack = clWhite;
 
for( unsigned int x = 0; x<w;  x++ )
  for( unsigned int y = 0; y<h; y++ )
    if( GetPixel( Image1->Canvas->Handle, x, y ) == ColorFont )
      for( unsigned int i = 0; i < n; i++ )
        {
        int x_center = w/2,                                 //// Для наглядности
            y_center = h/2,                                   //
            x_angle = w/2 + max * cos( 2*M_PI*i/n ),          //
            y_angle = h/2 + max * sin( 2*M_PI*i/n ),          //
            x_curr = x,                                       //
            y_curr = y;                                     ////
        int D1 = (x_curr - x_center) * (y_angle - y_center) - (y_curr - y_center) * (x_angle - x_center);
                                                                 // D = 0 лежит на прямой
                                                                 // D < 0 слева от прямой
                                                                 // D > 0 справа от прямой
        int x_next_angle = w/2 + max * cos( 2*M_PI*(i+1)/n ),
            y_next_angle = h/2 + max * sin( 2*M_PI*(i+1)/n );
 
        int D2 = (x_curr - x_center) * (y_next_angle - y_center) - (y_curr - y_center) * (x_next_angle - x_center);
 
 
        if( D1 >= 0 && D2 < 0 )
          ArrTriangle[i]++;
 
        }
 
int summ(0);
for( unsigned int i = 0; i < n; i++ )
  {
  summ += ArrTriangle[i];
  Memo1->Lines->Add( ArrTriangle[i] );
  }
Memo1->Lines->Add( "-----------" );
Memo1->Lines->Add( summ );
}



P.P.P.S. Славному gunslinger посвящается:

http://dl.zaycev.net/67300/1248136/marty_robbins_-_big_iron_(zaycev.net).mp3

2
31.03.2015, 18:58

Не по теме:

Мне всегда больше как-то вот так представлялось

Действующие лица: gunslinger и ТС.:D

0
 Аватар для dexter007
4 / 4 / 0
Регистрация: 10.10.2012
Сообщений: 27
01.04.2015, 11:01  [ТС]
Большое спасибо. Побольше бы таких людей.) если нужна будет помощь по java ee - обращайтесь. Еще раз благодарю.
0
 Аватар для dexter007
4 / 4 / 0
Регистрация: 10.10.2012
Сообщений: 27
05.04.2015, 15:06  [ТС]
еще один небольшой вопрос: насколько я понял берется текущая точка и проверяется лежит ли она между двумя образованными векторами D1 и D2. хочу переместить центр разбиение в левый верхний угол. но результат не верен . подскажите пожалуйста в чем проблема. Код кнопки.
C++
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
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Memo1->Clear();
 
TRect Rect( 0, 0, Image1->Width, Image1->Height );
 
  int n = 20;
  unsigned int w = Image1->Width, h = Image1->Height;
  unsigned int max = w > h ? w : h;
  Image1->Canvas->Pen->Color = clRed;
  for( unsigned i = 0; i < n; i++ )
    {
    Image1->Canvas->MoveTo( 0, 0 );
    Image1->Canvas->LineTo( w + max * cos(2*M_PI*i/n), h + max * sin(2*M_PI*i/n) );
    }
 
 
 
int *ArrTriangle = new int[n];
memset( ArrTriangle, 0, n*sizeof( int ) );
 
const TColor ColorFont = clBlack,
             ColorBack = clWhite;
 
for( unsigned int x = 0; x<w;  x++ )
  for( unsigned int y = 0; y<h; y++ )
    if( GetPixel( Image1->Canvas->Handle, x, y ) == ColorFont )
      for( unsigned int i = 0; i < n; i++ )
        {
 
        int x_center = 0,                                  
            y_center = 0,                               
            x_angle = w +  max * cos( 2*M_PI*i/n ),        
            y_angle = h +  max * sin( 2*M_PI*i/n ),        
            x_curr = x,                                      
            y_curr = y;                                 
        int D1 = (x_curr - x_center) * (y_angle - y_center) - (y_curr - y_center) * (x_angle - x_center);
                                                                 
                                                               
                                                    
        int x_next_angle = w + max * cos( 2*M_PI*(i+1)/n ),
            y_next_angle = h + max * sin( 2*M_PI*(i+1)/n );
 
        int D2 = (x_curr - x_center) * (y_next_angle - y_center) - (y_curr - y_center) * (x_next_angle - x_center);
 
 
        if( D1 >= 0 && D2 < 0 )
          ArrTriangle[i]++;
 
        }
 
int summ(0);
for(  int i = 0; i < n; i++ )
  {
  summ += ArrTriangle[i];
  Memo1->Lines->Add( ArrTriangle[i] );
  }
Memo1->Lines->Add( "-----------" );
Memo1->Lines->Add( summ );
}
Миниатюры
Разбить изображения на 20 ровных сектора и подсчитать количество черных пикселов в каждом из найденых секторов  
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
06.04.2015, 09:10
Цитата Сообщение от dexter007 Посмотреть сообщение
насколько я понял берется текущая точка и проверяется лежит ли она между двумя образованными векторами D1 и D2
Да. Задумка была такая.
Цитата Сообщение от dexter007 Посмотреть сообщение
хочу переместить центр разбиение в левый верхний угол. но результат не верен . подскажите пожалуйста в чем проблема
Дело в том, что вы переносите только центр. А надо еще и все конечные точки отрезков (от центра до края) ограничить одной четвертью окружности.
То есть зачем вам, в вашем примере выше, откладывать отрезки влево и вверх?
(Попробуйте в коде ниже не переносить сначала центр функцией MoveTo.)

Если танцеывать дальше от варианта, предложенного gunslinger, вот так ограничьте обход:
C++
1
2
3
4
5
  for( double count = 0; count <= 5; count+=5./n ) // Обход от нуля до пяти - это только одначетвертая четверть.
    {
    Image1->Canvas->MoveTo( w/2, h/2 ); // Соответственно нули
    Image1->Canvas->LineTo( w/2 + max * cos(2*M_PI*count/n), h/2 + max * sin(2*M_PI*count/n) );
    }
0
 Аватар для dexter007
4 / 4 / 0
Регистрация: 10.10.2012
Сообщений: 27
06.04.2015, 17:00  [ТС]
Попробуйте в коде ниже не переносить сначала центр функцией MoveTo.
сделал. не помогло.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.04.2015, 17:00
Помогаю со студенческими работами здесь

Подсчитать количество черных пикселей на Picturebox
написал код который должен считать количество черных пикселей на картинке, загруженной в picturebox. Сама картинка из paint черно-белая на...

Нестабильные сектора и Неисправимые ошибки секторов
Всем привет, хотелось бы узнать, если ли причины для тревоги? Сколько такой диск может ещё прожить? ...

Неисправимые ошибки секторов, нестабильные сектора
Возможно ли восстановить этот HDD? и как можно это сделать ? главная причина долгая загрузка вех приложений и системы. теряются и...

Неполадки с HDD: нестабильные сектора и неисправимые ошибки секторов
Здравствуйте, прошу помощи в определении причин неисправности. Имеются 2 диска: 1- ST1000DL002 1000gb, работает 7-ой год как часы, 2 -...

Запись в сектора на floppy-диске, и чтение с этих секторов
Здраствуйте. Меня интерисует Функция на Си чтоби записывать данные (строку, или часть отдельного файла) в отдельный сектор на флопи...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru