Визуализатор данных

Планы, идеология, архитектура и т.п.

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

Re: Визуализатор данных

Сообщение Alex2013 » 15.04.2021 11:13:43

Shleps писал(а):Аналогично - голый канвас и скрипты.
Если заглядывали внутрь tpg, то там сплошняком такое

Это все-же не совсем скрипт, а скорее то что я назвал "описание переменных "
FORM__TEXTAREA_Gen_HTM.var
Код: Выделить всё
(*SEdit*********************************
VN:"F_STR_ИМЯ" REM:"" NZ:""
VN:"DrawList" REM:"" NZ:"FORM 0 16777215/ИМЯ/ЗАПРОС/43 48-323 250nrFORM_TEXTAREA 0 16777215 ИМЯ Подпись B_01 submit 106 108 202 208 END"
VN:"OP" REM:"" NZ:"FORM_TEXTAREA 0 16777215ИМЯПодписьB_01submit 106 108 202 208 1 END"
VN:"F_COD_ИМЯ" REM:"" NZ:"<form action="ЗАПРОС" method="Get"  style="BACKGROUND-COLOR: #FFFFFF;COLOR: #000000; POSITION: absolute; TOP:48px; LEFT:43px; width:280px;height:202px;">"
VN:"FC_COUNT_ИМЯ" REM:"" NZ:"2"
VN:"FC_N_ИМЯ" REM:"" NZ:"1"
VN:"Y_ИМЯ" REM:"" NZ:"100"
//****************************************)

Только в "визуализаторе данных" все значительно менне хаотично, что разумеется плюс.
(Но у меня этот "псевдокод" генерируются "редактором скриптов"(точнее встроенной в него "мини-IDE"), так что особо понятным ему быть необязательно )

А "классический скрипт" это что-то вроде этого
STAR_R_DRW.ps
Код: Выделить всё
// Прорисовка звезды
Var
S,S1:String;
x,y,x1,y1,i:Longint;
x2,y2,x3,y3:Longint;

Function Next1(Var SS:String;Ch:Char):String;
var i:Longint;
begin
  I:=Pos(Ch,SS);
  If i>0 then begin
   Result:= Copy (ss,1,i-1);
delete(SS,1,i);
  end
end;

Begin
S:=GetParam('OP');
S1:=Next1(s,' ');
DRW_SetPenColor   ( StrToInt(Next1(s,' ') ));
DRW_SetBrushColor ( StrToInt(Next1(s,' ') ));

SetParam('RET_RECT',S) ; // Возвращаю границы 'X Y-X1 Y1'

X:=StrToInt(Next1(s,' '));
Y:=StrToInt(Next1(s,'-'));
X1:=StrToInt(Next1(s,' '));
Y1:=StrToInt(S);

x2:=X+ ((x1-x) div 2);
y2:=y+ ((y1-y) div 2);

x3:=X+ ((x1-x) div 3);
y3:=y+ ((y1-y) div 3);


Drw_Line(x,y3, x1,y3);
Drw_Line(x1,y3,x,y1);
Drw_Line(x2,Y,x,y1);
Drw_Line(x2,Y,x1,y1);
Drw_Line(x1,y1,x,y3);
end.

То есть почти полноценный произвольный кусок алгоритма на языке высокого уровня.

Добавлено спустя 37 минут 4 секунды:
Shleps писал(а):Вот на этом скриншоте в углу статистика гласит, что на экране 28000 примитивов.
Это значит, что каждый честно перерисованный кадр интерпретировалось 28000+ строк текста.

Это то что я называю заслуженная гордость!
(У меня до тыщи элементов в списке команд (максимум 400- 500) не доходило ни разу впрочем сама задача этого не требовала в принципе, это же не мини Корел Драв и даже неполноценный редактор, веб-станиц, а чтото вроде "редактора форм в лазарусе". )

Добавлено спустя 12 минут 43 секунды:
Shleps писал(а):На экран оно вываливается практически как есть. Т.е. отрисовка каждого кадра это интерпретация всей программы.
Что можно - кешируется в уже распарсенном состоянии, но зум и скролл в любом случае заставят всё пересчитать.
Может поэтому рендер кажется неотзывчивым?

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

А "отзывчивость" можно повысить разместив критически медленный блок рендера в отдельном потоке. Текущий расчет "срывается" по приходу следующего пакета данных не успев завершится ? Ну и черт с ним! Пользователь этого не увидит, а реакция будет "космической". (это уже из более свежего опыта работы с условной риалтайм обработкой данных )
Последний раз редактировалось Alex2013 09.04.2022 11:25:19, всего редактировалось 2 раз(а).
Alex2013
долгожитель
 
Сообщения: 3048
Зарегистрирован: 03.04.2013 11:59:44

Re: Визуализатор данных

Сообщение zub » 15.04.2021 15:06:58

>>Отмены действительно нет и пока не планируется (в том смысле, что я не знаю как это вообще возможно осуществить в том применении, на которое я целился).
я имею ввиду не ундо, а хотябы зачершить работу текущей операции по еск

>>Думаю, как будет лучше объяснить что там для чего нажимать- может видеоролик записать?
хз. это надо у пользователей спрашивать

>>Т.е. отрисовка каждого кадра это интерпретация всей программы.
>>Это значит, что каждый честно перерисованный кадр интерпретировалось 28000+ строк текста.
так каши не сварить((
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: Визуализатор данных

Сообщение Kopa » 15.04.2021 16:09:05

Вот на такой редактор можно ориентироваться :)
yEd Graph Editor
(запускается под Java RE)

P.S. Тоже одно время "страдал" сделать простой редактор "узлов" и в качестве входных/выходных форматов поддержки Yed файлов.
(сделал и некоторый вполне рабочий прототип, но т.к. всё упиралось на GDI и не кешировалось, то при каждом перемешении узлов было некоторое "мигание" схемы)
Kopa
новенький
 
Сообщения: 41
Зарегистрирован: 29.10.2020 12:24:36

Re: Визуализатор данных

Сообщение Shleps » 15.04.2021 18:54:47

Alex2013 писал(а):Только в "визуализаторе данных" все значительно менне хаотично что разумеется плюс.
(Но у меня этот "псевдокод" генерируются "редактором скриптов"(точнее встроенной в него "мини-IDE"), так что особо понятным ему быть необязательно )

У меня есть инструмент (но пока задизэйблен), который генерируют этот код, но не из IDE, а фиксируя движения мыши/пера.
т.е. шаблон объекта можно нарисовать одним росчерком по планшету, и тул ещё по возможности снизит ломаность кривой, или завершит контур, или заменит корявый многоугольник "от руки" на ровный прямоугольник.

А "классический скрипт" это что-то вроде этого
...
То есть почти полноценный произвольный кусок алгоритма на языке высокого уровня.

Я от такого решил абстрагироваться - задача не требует. Есть неколько типовых фигур, для которых код автогенерируется на лету - и хватит.


скролл работал по уже просчитанным данным, масштабирования рабочего поля у меня нет, но есть "хитровывернутый" выбор элемента мышкой ( суть проблемы в том что я "в общем виде" не знаю границы рисуемой фигуры заранее)

Т.е. оно работало в экранных координатах, не в мировых?
У меня нормальное выделение мышью так и не сделано, пока используется клик по прямоугольной оболочке элемента сцены, а она постоянно поддерживается актуальной, т.к. на неё завязано размещение портов объектов и связей. У совсем "тонких" элементов, после проверки на попадание в оболочку идёт проверка на соответствию уравнению прямой с огрублением, т.е. попадание в окрестность линии.


А "отзывчивость" можно повысить разместив критически медленный блок рендера в отдельном потоке
.
Я хотел разбить на несколько потоков, но пока узкое место не здесь - простые схемы и эта версия в реалтайме вертит, а сложные ещё надо умудриться получить.
Пока хватает на моделирование размещения по зданию нескольких сот единиц IT-оборудования - полезнее прикрутить визуализацию статистики с этого оборудования и управление им, чем подымать предел до нескольких тысяч.
Очень хочется восстановить, например, топологию сети по таблицам кросиисровки патч-панелей и схеме подключения портов в коммутаторах (которая может считываться прямо из коммутатора)

Добавлено спустя 32 минуты 18 секунд:
zub писал(а):>>Отмены действительно нет и пока не планируется (в том смысле, что я не знаю как это вообще возможно осуществить в том применении, на которое я целился).
я имею ввиду не ундо, а хотябы зачершить работу текущей операции по еск

У меня вроде таких операций и нет - можно зацепить шаблон и клонировать его кликами по сцене, выбрать другой - и клонироваться будет уже новый.
А потом сменить режим с добавления элементов на редактирование, управление или навигацию не нажимая Esc, прямо по ходу операции.
Рисование резиновых линий, esc требует, но оно пока заблокировано.

>>Это значит, что каждый честно перерисованный кадр интерпретировалось 28000+ строк текста.
так каши не сварить((

Ну, если потенциальные конкуренты в отрасли (Grafana) вообще работают через web-интерфейс и крашатся при попытке отобразить статистику, более чем за 3 часа, а будущая запчасть этого комплекса с сильными лагами зумит данные за 1-2 суток, но никуда не падает - то почему бы и нет?
Например все имеющиеся программы мониторинга типа Zabbix предоставляют опрос раз в минуту (самое лучшее), как следствие - теряют пиковые значения, усредняя всё на этом минутном интервале, а мне нужно видеть пиковую нагрузку на компоненты инфраструктуры с секундным разрешением. Ну и шут с ними, с лагами - зато я получу такую информацию, какую сейчас вообще не получить!
Например, что сегодня ночью в пике на файл-сервер записывалось 2.5 гигабайта в секунду, а стандартный мониторинг из-за усреднения разглядел только 4 гигабита в секунду.
Аватара пользователя
Shleps
постоялец
 
Сообщения: 194
Зарегистрирован: 14.06.2006 20:25:14

Re: Визуализатор данных

Сообщение zub » 15.04.2021 22:47:16

Чето какаято путаница, при чем тут лаги глючность и статистика
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: Визуализатор данных

Сообщение Shleps » 15.04.2021 22:57:44

zub писал(а):Чето какаято путаница, при чем тут лаги глючность и статистика

Я имею в виду, что программе простительны лаги, если она позволяет оперировать теми данными, которыми конкуренты не могут. По крайней мере конкуренты в области визуализации статистики и управления.
В качестве чертёжного тула, типа автокада она, конечно не пойдёт ни сейчас, ни потом.
Аватара пользователя
Shleps
постоялец
 
Сообщения: 194
Зарегистрирован: 14.06.2006 20:25:14

Re: Визуализатор данных

Сообщение Alex2013 » 16.04.2021 20:23:58

Shleps писал(а):Т.е. оно работало в экранных координатах, не в мировых?
У меня нормальное выделение мышью так и не сделано, пока используется клик по прямоугольной оболочке элемента сцены, а она постоянно поддерживается актуальной, т.к. на неё завязано размещение портов объектов и связей. У совсем "тонких" элементов, после проверки на попадание в оболочку идёт проверка на соответствию уравнению прямой с огрублением, т.е. попадание в окрестность линии.

1 Работало( и продолжает работать ) в координатах веб страницы (редактор форм в лазарусе тоже не масштабируется )
2 У меня в "общем виде" нет заранее заданной жесткой прямоугольной рамки и даже координаты точки привязки не более чем "доброе пожелание"(плюс почти все элементы могут быть "дырявыми" то есть выбирая туже "звезду", я должен попасть точно в линию, а не в прямоугольную область ( которая может рассчитывается "задним числом" по результатам прорисовки ).
3 Для "тонких элементов" я использую "алгоритм художника" ( то есть "в фоновом режиме" по очереди перерисовываю монохромную "тень фигуры" пока не попадаю ( по координатам курсора ) хоть куда-то или не заканчивается список (скорость примерно такая же как и при "быстрой отрисовке" всей картинки ( или выше за счет простой оптимизации ) то есть задержка почти незаметна )
Alex2013
долгожитель
 
Сообщения: 3048
Зарегистрирован: 03.04.2013 11:59:44

Re: Визуализатор данных

Сообщение Shleps » 16.04.2021 21:12:54

Alex2013 писал(а):1 Работало( и продолжает работать ) в координатах веб страницы (редактор форм в лазарусе тоже не масштабируется )

Это быстро, они же целочисленные, если я не ошибаюсь, и не нужно умножения на матрицу проективного преобразования - несколько умножений и сложений на точку.

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

У меня рамка тоже не задаётся, а вычисляется исполнением "всухую" графических команд, отрисовывающих элемент сцены. С дырявыми элементами, конечно швах.

3 Для "тонких элементов" я использую "алгоритм художника" ( то есть "в фоновом режиме" по очереди перерисовываю монохромную "тень фигуры" пока не попадаю ( по координатам курсора ) хоть куда-то или не заканчивается список (скорость примерно такая же как и при "быстрой отрисовке" всей картинки ( или выше за счет простой оптимизации ) то есть задержка почти незаметна )

Обычно художником называют алгоритм отрисовки 3д-сцены от дальних полигонов к ближним. Вроде и картинка получается, и над отсечением невидимой геометрии голову ломать не надо, но медленнее некуда.
Аватара пользователя
Shleps
постоялец
 
Сообщения: 194
Зарегистрирован: 14.06.2006 20:25:14

Re: Визуализатор данных

Сообщение Alex2013 » 16.04.2021 22:22:42

Shleps писал(а):Обычно художником называют алгоритм отрисовки 3д-сцены от дальних полигонов к ближним. Вроде и картинка получается, и над отсечением невидимой геометрии голову ломать не надо, но медленнее некуда.

Я в курсе просто принцип похожий ! Рисую картинку с последнего элемента ("по оси Z") до первого и если хоть одна точка "попадет в курсор" ( Звучит однако ! :D ) то завершаю цикл. ( Кстати в OpenGL стандартный "выбор 3D-объекта" делается аналогично )

Изображение

https://i.yapx.ru/LJ78X.gif
Alex2013
долгожитель
 
Сообщения: 3048
Зарегистрирован: 03.04.2013 11:59:44

Re: Визуализатор данных

Сообщение Seenkao » 17.04.2021 01:59:04

Alex2013, glRenderMode (если там не OpenGL ES).
ну или ... (в рамках рекламы :mrgreen: )
https://youtu.be/OQGXbcDdNY4 - способы взаимодействия мышки с объектами (вместо мыши можно использовать всё что угодно)
https://youtu.be/8uMziQDc4A8 - выявление пересечений (так же клик мыши по объекту, расчёты вручную)
Единственно в 2Д, для 3Д надо другие формулы (или дважды 2Д рассчитывать, вроде как, могу ошибаться...). В общем Херна читай, там формулы есть.
Seenkao
энтузиаст
 
Сообщения: 526
Зарегистрирован: 01.04.2020 03:37:12

Re: Визуализатор данных

Сообщение Alex2013 » 17.04.2021 14:36:48

Seenkao писал(а):glRenderMode

Совершенно верно...
У меня сейчас есть более интересный "затык" грубо говоря нужно "рисовать курсором" на "2D экране" произвольно повернутом в 3D .
Зы
Кстати если освоил OpenGL то почему бы не сделал "визуализатор данных" с полностью "OpenGL-рендером" ?
("2Д режим" там отлично работает ) :idea: Лучше всего разумеется сделать "сменный рендер" ...
То есть Софт,OpenGL и например OpenСV. (Где 2д графика тоже довольна быстро реализована )
Alex2013
долгожитель
 
Сообщения: 3048
Зарегистрирован: 03.04.2013 11:59:44

Re: Визуализатор данных

Сообщение Seenkao » 17.04.2021 15:45:25

Alex2013 писал(а):У меня сейчас есть более интересный "затык" грубо говоря нужно "рисовать курсором" на "2D экране" произвольно повернутом в 3D .

Это не "затык" ))) - это мучения с трансляцией-ротацией-трансляцией-ротацией... и чтоб было понятно что в каком варианте проходит. Когда поймёшь, думаю проще будет (я всё ещё разираюсь :) )

Alex2013 писал(а):Кстати если освоил OpenGL то почему бы не сделал "визуализатор данных" с полностью "OpenGL-рендером" ?

Если это вопрос мне, то, до визуализатора далеко. )))
Да, опыт есть как делать "визуальный конструктор". Уже делал и даже рабочая версия есть (под винду, но это не важно сейчас). Делал конструктор игры где можно было визуально собрать карту. Именно карту отдельную карту, но можно было все карты объединить в один файл. В общем заготовок достаточно, но это только на будущее.
В первую очередь надо сделать чтоб всё работало хорошо, и чтоб у пользователя не возникало: "а почему это не работает?", "а почему этих банальных вещей нет?" и прочей ерунды. :)
Seenkao
энтузиаст
 
Сообщения: 526
Зарегистрирован: 01.04.2020 03:37:12

Re: Визуализатор данных

Сообщение Shleps » 17.04.2021 19:28:41

Alex2013 писал(а):
Seenkao писал(а):glRenderMode

У меня сейчас есть более интересный "затык" грубо говоря нужно "рисовать курсором" на "2D экране" произвольно повернутом в 3D .


А что такого? 2Д-экран же рисуется на мониторе, т.е. проебразование проекции для него есть. Посчитать обратную матрицу и умножать координаты мыши на мониторе на неё.
Если не какой-нибудь вырожденный хитроповёрнутый экран (торцом к монитору), то ничего страшного нет.
Может быть в openGL даже расчёт обратной матрицы предусмотрен.

Я то всё на GDI делаю.
Аватара пользователя
Shleps
постоялец
 
Сообщения: 194
Зарегистрирован: 14.06.2006 20:25:14

Re: Визуализатор данных

Сообщение Alex2013 » 18.04.2021 00:06:47

Shleps писал(а):А что такого? 2Д-экран же рисуется на мониторе, т.е. проебразование проекции для него есть. Посчитать обратную матрицу и умножать координаты мыши на мониторе на неё.

Так я и говорю "не проблема, а затык" чисто на реализации глючит (с теорией все понятно ).
Shleps писал(а):Если не какой-нибудь вырожденный хитроповёрнутый экран (торцом к монитору), то ничего страшного нет.

А шут его знает " хитро или не хитро" повёрнутый но у меня все это нужно делать с учетом возможной работы в ВиАр и того, что "виртуальный экран" может быть совсем даже не плоский...
Изображение

Добавлено спустя 2 минуты 8 секунд:
Shleps писал(а):Я то всё на GDI делаю.

Canvas это не GDI ! :idea:
Последний раз редактировалось Alex2013 18.04.2021 01:07:46, всего редактировалось 1 раз.
Alex2013
долгожитель
 
Сообщения: 3048
Зарегистрирован: 03.04.2013 11:59:44

Re: Визуализатор данных

Сообщение Shleps » 18.04.2021 00:37:21

Когда-то я мечтал о коммандере, который будет информацию представлять в 3Д, чтобы выглядело примерно как в фильме хакеры.

Теперь тупо матерюсь от отсутствия Мidningt Сommander в Solaris 11.4
Аватара пользователя
Shleps
постоялец
 
Сообщения: 194
Зарегистрирован: 14.06.2006 20:25:14

Пред.След.

Вернуться в Разработки на нашем сайте

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

Рейтинг@Mail.ru