Как оптимизировать определение границ произвольной фигуры ?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Как оптимизировать определение границ произвольной фигур

Сообщение vitaly_l » 02.02.2017 20:20:22

Pavia писал(а):В Delphi есть автоматическое разиминовывание(^) указателей.

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

zub писал(а):конечно гонит, но и суть конечно есть)) ВСЁ ХОРОШО В МЕРУ И ПОДЕЛУ

Не ну это серьёзный вопрос: Как быстрее будет обрабатывать?
Код: Выделить всё
arrayOfUkazatelByte[x]^[y] := 222; // <== человек, там говорит что это уже анахронизм.
arrayOfArrayOfByte[x,y] := 222; // <== а вот так всё тип-топ и круто.

Гонит, он или не гонит?

zub писал(а):BeginUpdate\EndUpdate

В данном коде в их нет смысла, т.к. происходит только чтение.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Как оптимизировать определение границ произвольной фигур

Сообщение zub » 02.02.2017 20:32:36

если человек это говорит безапиляционно и не привязываясь к конкретной реализации чегото - умножаем его слова на ноль.
>>Не ну это серьёзный вопрос: Как быстрее будет обрабатывать?
Странный ты, это зависит от того как объявлены данные массивы
думаю что самым оптимальным будет arrayOfArrayOfByte если он статический. если динамический - то разницы в вариантах почти небудет

Добавлено спустя 1 минуту 14 секунд:
Re: Как оптимизировать определение границ произвольной фигуры ?
>>В данном коде в их нет смысла, т.к. происходит только чтение.
я не о смысле, а о том что в этих чудесных процедурах происходит. ато медведя уже поделили
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Как оптимизировать определение границ произвольной фигур

Сообщение vitaly_l » 02.02.2017 20:39:53

zub писал(а):статический

Так он там говорит правду? Круто... надо проверить, с секундомером...
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Как оптимизировать определение границ произвольной фигур

Сообщение zub » 02.02.2017 20:44:52

>>Круто... надо проверить, с секундомером
что крутого? Я почемуто не сомневался - художники неумеют в указатели
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Как оптимизировать определение границ произвольной фигур

Сообщение vitaly_l » 02.02.2017 20:49:27

zub писал(а):Я почемуто не сомневался художники неумеют в указатели

А чего там уметь? Фигулька слева, назначил. Фигуька справа разыменовал. А и ещё кругляшку, с буквой "а" посередине - нужно печатать, когда адрес присваиваешь. Вот и вся наука. Нет?
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Как оптимизировать определение границ произвольной фигур

Сообщение zub » 02.02.2017 20:53:04

>>Вот и вся наука. Нет?
Главная наука - где они ненадо, где можно, где без них никак.
Идеальная программа это "где они ненадо", но жизнь иногда заставляет "без них никак".
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Как оптимизировать определение границ произвольной фигур

Сообщение vitaly_l » 02.02.2017 20:56:03

zub писал(а):но жизнь иногда заставляет

Не ну когда рекорды, с фигульками удобно... а вот когда просто массивы... необходимость в них есть или нет? Вот в чём суть фишки.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Как оптимизировать определение границ произвольной фигур

Сообщение zub » 02.02.2017 20:57:35

>> необходимость в них есть или нет?
На ровном месте необходимости в них никакой нет

>>фишки
нет тут никаких фишек
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Как оптимизировать определение границ произвольной фигур

Сообщение vitaly_l » 02.02.2017 21:01:37

zub писал(а):На ровном месте необходимости в них никакой нет

А зачем тогда их в битмапе делают? По строчкам скакать? Но какой смысл, скакать по строчкам, когда их все подряд перебирают? Соответственно, куча лишних итераций, при сканлайне происходит. А без сканлайна, всё будет на 0.00001 секунды быстрее.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Как оптимизировать определение границ произвольной фигур

Сообщение zub » 02.02.2017 21:03:58

>>Вот и вся наука
Как ты себе это представляешь без них? разницу между статическим и динамическим массивом понимаешь?
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Как оптимизировать определение границ произвольной фигур

Сообщение vitaly_l » 02.02.2017 21:07:31

zub писал(а):Как ты себе это представляешь без них?

Там же Data - это одномерный массив. Перебирается for i := 0 to pred(x * y) do Data[i] := $ffffff; и в итоге, в цикле будут всё те же самые значения.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Как оптимизировать определение границ произвольной фигур

Сообщение zub » 02.02.2017 21:09:17

Давай подробней, телепаты не телепатируют
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Как оптимизировать определение границ произвольной фигур

Сообщение vitaly_l » 02.02.2017 21:15:31

zub писал(а):Давай подробней, телепаты не телепатируют

Да в общем-то я всё написал. Перебор одного массива - это максимальная скорость при обработке битмапа, когда его перебирают целиком. Это быстрее чем сканлайном.
Либо так:
Код: Выделить всё
for i := 0 to pred(x * y) do Data[i] := $ffffff;

Либо так:
Код: Выделить всё
for i := 0 to pred(x * y) do begin
Data^ := $ffffff;
inc(Data);
end;
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Как оптимизировать определение границ произвольной фигур

Сообщение zub » 02.02.2017 21:24:08

>>Да в общем-то я всё написал
какуюто ерунду написал. что такое Data, x, y...? про что вообще данный кусок?
Ну и в который раз повторяю - нету прямого доступа к пикселям изображения на экране
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Как оптимизировать определение границ произвольной фигур

Сообщение vitaly_l » 02.02.2017 21:26:43

zub писал(а):нету прямого доступа к пикселям изображения на экране

А при чём здесь экран? Мы битмапку курочим.

Вот код Alex2013 уже его приводил:
Alex2013 писал(а):procedure TRawForm.Button1Click(Sender: TObject);
begin
Image1.Picture.Bitmap.BeginUpdate;

   With  Image1.Picture.Bitmap.RawImage do begin

     FillByte(Data^,  DataSize  ,60);//Заполнение через RawImage
   
end;
   Image1.Picture.Bitmap.EndUpdate;
   Image1.Refresh;

end;


Добавлено спустя 6 минут 42 секунды:
Re: Как оптимизировать определение границ произвольной фигуры ?
А в BGRA - это выглядит так:
Код: Выделить всё
       
p := bmp.Data;
        for x := 0 to pred(bmp.NbPixels) do begin
          p^.red := not p^.red;  //invert red channel
          inc(p);
          end;
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Пред.След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot], Yandex [Bot] и гости: 226

Рейтинг@Mail.ru