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

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

Страниц: 1 ... 4 5 [6] 7   Вниз
  Печать  
Автор Тема: Light Plot2D  (Прочитано 58579 раз)
daimon
Гость
« Ответ #75 : Июль 22, 2010, 13:42 »

Можете описать Вашу концепцую - точки та всё равно надо пересчитывать под виджет?!
Записан
daimon
Гость
« Ответ #76 : Июль 22, 2010, 13:56 »

Я думаю в Ваш проект ещё нужно добавить сигнал изменения настроек- полезно для settings widget и создать отдельный класс или пространство имен всех настроек графика под settings widget
« Последнее редактирование: Июль 22, 2010, 14:00 от daimon » Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #77 : Июль 22, 2010, 14:57 »

Цитировать
Можете описать Вашу концепцую - точки та всё равно надо пересчитывать под виджет?!

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

Цитировать
Я думаю в Ваш проект ещё нужно добавить сигнал изменения настроек- полезно для settings widget и создать отдельный класс или пространство имен всех настроек графика под settings widget
Да, наверное, добавить сигналы будет не лишним.
По поводу создания отдельного класса настроек:

У Вас, как я понял роль его выполняет Settings2DGraph.
Я бы не стал так делать..
Во-первых, он у Вас довольно большой (чего там только нет)). Если мне понадобиться изменить только лишь, ну скажем, double stepX, то получается я должен создать объект класса Settings2DGraph, изменить в нём данное поле и затем записать его в plotter, воспользовавшись функцией:
Код
C++ (Qt)
void set_plot_settings(Settings2DGraph &opt_graph);
 
 
Кстати, при этом не произойдёт высылка сигнала
Код
C++ (Qt)
void modified(bool);
 
поскольку все поля у Вас открыты и их изменение не вызывает сигнала.. (а это не хорошо))

Это не рационально - всё мешать в одну кучу. И делать члены класса открытыми - ну эт тож вчерашний день)

Я надеюсь, всё же допишу в ближайшее время документацию. Руки пока до неё не доходят) 

   
Записан

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

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

Сообщений: 3880


Просмотр профиля WWW
« Ответ #78 : Июль 22, 2010, 15:05 »

В доке:
"Где достать библиотеку"
СССРовское слово "достать" лучше заменить, например, на "взять"
Записан

Юра.
daimon
Гость
« Ответ #79 : Июль 22, 2010, 15:13 »

Хорошо на счёт класса настроек графика Вы правы, а вот пространство имен с константами надо создать, чтобы проще потом было использовать для settings widget
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #80 : Июль 22, 2010, 15:19 »

В доке:
"Где достать библиотеку"
СССРовское слово "достать" лучше заменить, например, на "взять"
Улыбающийся Спасибо, подправлю)

Хорошо на счёт класса настроек графика Вы правы, а вот пространство имен с константами надо создать, чтобы проще потом было использовать для settings widget
Вы имеете в виду это:
Код
C++ (Qt)
enum Symbol{NoSymbol = 0, Cross, Circle, Square, TriangleUp, TriangleDown, Rhombus};
 
Предлагаете его перенести в сам класс CurveData?
Или что Вы имеете в виду?)

Записан

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

Arch Linux Plasma 5
daimon
Гость
« Ответ #81 : Июль 22, 2010, 15:27 »

Не просто хочу, чтобы было похоже на пространство  имён Qt там всё есть, чтобы к этому пространству имён
был доступ везде. Если будет класс виджет настроек передавать указатель на весь класс графика? (Ваш проект)
« Последнее редактирование: Июль 22, 2010, 16:13 от daimon » Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #82 : Июль 22, 2010, 18:27 »

Цитировать
Не просто хочу, чтобы было похоже на пространство  имён Qt там всё есть, чтобы к этому пространству имён
был доступ везде.
На счёт namespace, я подумаю))

Цитировать
Если будет класс виджет настроек передавать указатель на весь класс графика? (Ваш проект)
Если создать некий класс (аналог Вашего Settings2DGraph) и передавать указатель на объект этого класса в метод класса plotter?
Ну это уже походит больше на костыль, дабы не переписывать уже имеющийся код Улыбающийся Короче не убедительно..
Чем Вам не нравится реализация и архитектура lightplot2d?
 
Записан

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

Arch Linux Plasma 5
daimon
Гость
« Ответ #83 : Июль 25, 2010, 16:46 »

Если попытаться ввести потоки при расчётах координат?
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #84 : Июль 25, 2010, 20:06 »

Цитировать
Если попытаться ввести потоки при расчётах координат?
А если попытаться поставить винду на ламповый компьютер?  Непонимающий Улыбающийся
Записан

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

Arch Linux Plasma 5
daimon
Гость
« Ответ #85 : Июль 25, 2010, 23:21 »

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

Сообщений: 2094



Просмотр профиля
« Ответ #86 : Июль 26, 2010, 14:59 »

-Ну и запросы у Вас:
сказала база данных
и повисла))

Цитировать
Чем больше точек, тем больше тормоза - надо разпоточить

Я так понял, под расчётом координат понимается следующее преобразование:

X = a11x + a12;
Y=a21y +  a22;

где x, y - координаты (физические) точки, те которые нам извне приходят;
X,Y - координаты на виджете, ai,j - матрица преобразования.

Так вот, ai,j высчитываются только один раз перед рисованием графика (кривых там, осей и т.п.), а дальше для каждой точки мы просто вычисляем X и Y.

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

Источник тормозов, (хотя я их не наблюдал) - эт сама отрисовка кривых, методом drawPolyline. Чем больше там точек (в QPolygonF) тем больше времени нужно для отрисовки.

Хотите ускориться: есть два(?) варианта:
1) выкинуть лишние точки, перед отрисовкой (можно в отдельном потоке)  
2) использовать OpenGL
3) использовать пункты 1 и 2 совместно.  


Yours sincerely
m_ax    
« Последнее редактирование: Июль 26, 2010, 15:00 от m_ax » Записан

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

Arch Linux Plasma 5
daimon
Гость
« Ответ #87 : Июль 26, 2010, 19:56 »

Самое простое закинуть в QGLWidget - слышал там paintEvent работает в 2 раза быстрее.
И ещё, если вектор точек будет велик - эти 2 умножения и 2 сложения будут долго делаться (надо разбить вектор на количество потоков и отдельно считать, а потом - в один всунуть).

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

Сообщений: 11445


Просмотр профиля
« Ответ #88 : Июль 26, 2010, 20:11 »

И ещё, если вектор точек будет велик - эти 2 умножения и 2 сложения будут долго делаться (надо разбить вектор на количество потоков и отдельно считать, а потом - в один всунуть).
Разбиение не требуется, можно просто дать каждой нитке считать N точек начиная со своего индекса. Однако, как уже сказал m_ax, при таком малом числе вычислений затея никуда не годится (2 и более процессоров будут медленнее чем 1). А вот рисовать параллельно - было бы интересно проверить. Ну не на экран а в QPixMap или QImage
Записан
daimon
Гость
« Ответ #89 : Июль 26, 2010, 20:43 »

Тут же проблема как разбить QPixmap для рисования и как создать ту универсальную функцию (поток) для отрисовки информации, а дальше экспериментировать с количеством потоков (для лучшего результата). И ещё подсчёт координат точек логично разпоточить, если вектор будет содержать более 1000 точек (отловить ифом).
« Последнее редактирование: Июль 26, 2010, 20:45 от daimon » Записан
Страниц: 1 ... 4 5 [6] 7   Вверх
  Печать  
 
Перейти в:  


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