Russian Qt Forum
Апрель 27, 2024, 08:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3] 4   Вниз
  Печать  
Автор Тема: Lazy Calculation(s)  (Прочитано 18090 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #30 : Ноябрь 25, 2020, 13:13 »

Ну так вы выскажите свои подозрения? А мы их обсудим)
Ну я подозреваю что при выполнении 2 нитками алгоритм стартового поста будет при каждом запуске выдавать РАЗНЫЕ рез-ты (хотя входные данные одни и те же)

Более того, даже при выполнении 1 ниткой рез-ты воспроизводятся только если данные поступают в том же порядке (чего в общем случае никто не обещал)

В общем это та самая простота что "хуже воровства"
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #31 : Ноябрь 25, 2020, 14:12 »

Цитировать
Ну я подозреваю что при выполнении 2 нитками алгоритм стартового поста будет при каждом запуске выдавать РАЗНЫЕ рез-ты (хотя входные данные одни и те же)
Ну да, для данной реализации они вообще говоря каждый раз будут разными. Ну и что? Вон там Vanda в соседней ветке тоже каждый раз картинки разные получает..
Вопрос в том, на сколько это критично? И на сколько критично они "разные" будут в среднем..(Что такое "разные"?)
« Последнее редактирование: Ноябрь 25, 2020, 14:15 от m_ax » Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #32 : Ноябрь 25, 2020, 14:41 »

Вопрос в том, на сколько это критично? И на сколько критично они "разные" будут в среднем..(Что такое "разные"?)
Есть вещи которые инженер (или то же профессионал) улавливает интуитивно  Улыбающийся
Напр "достаточность" задачи или "воспроизводимость" рез-тов.

Конкретно "чем это грозит"... Пример. Просчитали данным алгоритмом. Потом просчитали честно все точки (долго). Сравнили в фотожопе - все Ок, погрешность не превышает заданную напр 5%. Теперь, (веселые и счастливые) считаем какую-то последовательность картинок (анимацию). На втором кадре ничего не изменилось, он должен быть == первому. А он-то совсем не равен Плачущий Анимация (мерзко) "дрожжит" (flick). Все ясно, тому козлу что делал - не платить, и больше с ним не связываться. Сразу, разговоров не будет.
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #33 : Ноябрь 25, 2020, 14:48 »

Тогда отказывайтесь от этого алгоритма. В противном случае, если речь идёт об анимации (много-много картинок) то в этой ситуации картинка неизбежно будет "дрожать".
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #34 : Ноябрь 25, 2020, 15:09 »

Тогда отказывайтесь от этого алгоритма. В противном случае, если речь идёт об анимации (много-много картинок) то в этой ситуации картинка неизбежно будет "дрожать".
Ну почему "неизбежно". Предложите решение(я) этой проблемы
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #35 : Ноябрь 25, 2020, 16:53 »

Цитировать
Ну почему "неизбежно". Предложите решение(я) этой проблемы
А вы не ходите вокруг до около..) Я так сразу даже не предложу решения..
Если хотите плавности анимации, то это может оказаться совсем нетривиальная задачка..
Могу пока только сделать предположение, что этот метод должен быть строго детерминистическим и, наверное,
с фиксированной сеткой (без всякого random)
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #36 : Ноябрь 26, 2020, 10:37 »

А вы не ходите вокруг до около..)
Ну вот, опять надо рассказывать как я делал, тогда уж (может быть) и покритикуют Улыбающийся

Я так сразу даже не предложу решения.. Если хотите плавности анимации, то это может оказаться совсем нетривиальная задачка..
"Зашланговался". Ну это нормально, задача требует размышлений, это не футуры везде пихать

Могу пока только сделать предположение, что этот метод должен быть строго детерминистическим и, наверное,
с фиксированной сеткой (без всякого random)
И сразу "налил воды". Наверно рефлекторно, "публикуется", там без этого никак  Улыбающийся

Да, и формулирочка та еще "если хотите плавности". Мол, я чего-то там эдакого "хочу". Да меня никто не спрашивает, без этого выгонят с треском/позором
« Последнее редактирование: Ноябрь 26, 2020, 10:48 от Igors » Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #37 : Ноябрь 27, 2020, 15:12 »

Я боюсь (могу ошибаться) что уж лучше в таком случае с нуля всё переписать) Если уж совсем код древний и не расширяемый.. Улыбающийся
Но здесь, конечно, нужно в расчёт брать ресурсы и т.д..

Для инженера - всегда лучше Улыбающийся
Ну в конечном счёте и для заказчика.
Но... бабло часто побеждает разум - обычно считается, что "там же только одну функцию починить надо!"
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #38 : Ноябрь 27, 2020, 15:54 »

Для инженера - всегда лучше Улыбающийся
Ну в конечном счёте и для заказчика.
А что Вы, батенька, все в оффтоп да в оффтоп Улыбающийся Как бум решать проблему воспроизводимости? Там же есть простое решение, пусть не идеальное. Уж его-то Вы точно укажете, да и вообще, я в Вас верю, может и еще что толковое предложите
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #39 : Ноябрь 28, 2020, 20:16 »

Цитировать
Ну вот, опять надо рассказывать как я делал, тогда уж (может быть) и покритикуют  Улыбающийся
Могу предположить, что это интерполяция (фильтр) между ближайшими кадрами. Т.е. аналог сглаживания одномерной кривой: блур, короче  Улыбающийся
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #40 : Ноябрь 29, 2020, 00:32 »

Если моё предположение верно - то оно тоже ограничено: границы между контрастными областями также будут "дрожать"..
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #41 : Ноябрь 29, 2020, 11:33 »

Могу предположить, что это интерполяция (фильтр) между ближайшими кадрами. Т.е. аналог сглаживания одномерной кривой: блур, короче  Улыбающийся
Лично меня это интересует с точки зрения/задачи 3D рендера, хотя возможны и др применения за рамками моих интересов. Ну во всяком случае для рендера как-то лазить/считать/иметь 2 кадра одновременно - полная утопия  Улыбающийся НО мы можем рендерить один кадр неск раз, и так часто делают для различных "буферных" фич (напр расчет битмаповских теней). Отсюда простая идея немного модифицировать алгоритм стартового поста:

- На первом проходе применяем lazy, но не бежим сразу считать "опорные" точки, а только маркируем/запоминаем их. Эту операцию придется делать в одной нитке, полагаем что она "достаточно быстрая". Заметим что kd-tree здесь не подходит (вставка слишком дорогая)

- После того как опорные точки накоплены, считаем их все наваливаясь всей тушей (нитками), это "разпоточивается" прекрасно.

- И наконец, веселые-счастливые, считаем второй (финальный) проход всеми нитками используя для интерполяции дерево (thread-safe) построенное на первом

Если входные данные следуют в произвольном порядке, то на первом проходе придется снвчала их все сохранить и отсортировать.

Ну это на словах "так просто", на деле тут немало скользких мест, поэтому я бы с удовольствием послушал какие-нить идеи (пусть безумные).
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #42 : Ноябрь 29, 2020, 13:05 »

Цитировать
- На первом проходе применяем lazy, но не бежим сразу считать "опорные" точки, а только маркируем/запоминаем их. Эту операцию придется делать в одной нитке, полагаем что она "достаточно быстрая".
А у вас что, "опорные" точки для всех кадров одни и те же? Я предполагал, что если картинка движется, то и "опорные" точки индивидуальны для каждого кадра..

Цитировать
Заметим что kd-tree здесь не подходит (вставка слишком дорогая)

Для kd-tree это ещё пол беды.. После множества вставок оно у вас быстро станет несбалансированным. Я вообще считаю, что там не нужен метод insert.
Переписал, кстати, своё kd-tree, с учётом балансировки при его создании)

Цитировать
- И наконец, веселые-счастливые, считаем второй (финальный) проход всеми нитками используя для интерполяции дерево (thread-safe) построенное на первом

Как всегда всё очень мутно и туманно..
Ну мы привыкшие)
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #43 : Ноябрь 29, 2020, 13:19 »

Как всегда всё очень мутно и туманно..
Ну мы привыкшие)
Как всегда, Вы не хотите подумать, даже немного, и спешите "клеить ярлыки"  Улыбающийся

А у вас что, "опорные" точки для всех кадров одни и те же? Я предполагал, что если картинка движется, то и "опорные" точки индивидуальны для каждого кадра..
Ну ведь вверху подробно разжевано в чем разница между 2 кадрами и 2 проходами (одного и того же кадра). Конечно на каждом новом кадре все начнется с нуля, но если придут те же данные, то и рез-т будет точно тот же.


Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #44 : Ноябрь 29, 2020, 13:29 »

Для kd-tree это ещё пол беды.. После множества вставок оно у вас быстро станет несбалансированным.
Любое пополнение ведет к немедленной пере-балансировке, т.е. перестройке всего дерева (медиана-то убежала). Строго говоря, это не дерево а просто массив (хитро отсортированный)
Записан
Страниц: 1 2 [3] 4   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.052 секунд. Запросов: 22.