Фигуры Лиссажу, Вопрос по написанию |
Здравствуйте, гость ( Вход | Регистрация )
Фигуры Лиссажу, Вопрос по написанию |
QMainWindow |
18.10.2010, 21:54
Сообщение
#1
|
Участник Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: 0 |
Добрый день!
Вот подумываю написать по фану программу, генерирующая эти фигуры. Возникли 3 вопроса: 1. Какой класс лучше использовать? Здесь придется очень часто обновлять экран - 0-500ГЦ. Пейнтер, наверное, не подойдет. 2. С помощью чего обновлять экран. Можно отталкиваться от QTimer. Но рационально ли это? 3. Как сделать остаточный след на экране (как в осциллографе, даже если двигать точку медленно, то все равно будет заметна светимость следа)? Заранее СПС.)) |
|
|
ufna |
18.10.2010, 21:58
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: 5 |
1. обновления в Гцах - это уже для монитора вопрос, в мс сколько?
Если не QPainter - советую писать на ассемблере или уж лучше напрямую работать с видеокарточкой Ну или забить на Qt и юзать DirectX/OGL, шейдеры и т.п. Вопрос - что это за фигуры в принципе? 2. обновлять экран - можно по таймеру, это рациоально. Можно - тупо апдейтить и апдейтить в конце каждой перерисовки. 3. двойная буферизация как возможный вариант. Хотя это к вопросу №1 больше, т.к. далее - дело техники |
|
|
QMainWindow |
18.10.2010, 22:28
Сообщение
#3
|
Участник Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: 0 |
Гц - это я вспоминаю значения, стоявшие на осциллографе у нас, когда была практическая работа по данной теме. Т.е. в данном случае - герцы - значения на осциллографе.
Ну я не такой крутой кодер, чтобы уж прям с видеокартой напрямую работать))) Лучше средствами Qt. А OpenGL на Qt может подойти? Или для таких дел QPainter тоже может сгодиться. Я просто почему спрашиваю, потому вот сделаю через Пейнтер, а потом окажется, что можно было делать через другой класс, который подходит лучше.)) Вот ссылка: http://ru.wikipedia.org/wiki/Фигуры_Лиссажу. Тут написано лучше, чем скажу я. |
|
|
ufna |
18.10.2010, 22:51
Сообщение
#4
|
Активный участник Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: 5 |
я далек от осцилографов, но в графике имеют значения мс, а вот как вы их уже к герцам приложите - вопрос по области применения
OpenGL и Qt дружат отлично, но - здесь те же системы отрисовки, графика то 2Д и динамическая. Тут как бы - а "другой" - это какой класс? QPainter - по сути основа всей отрисовки в Qt. Если не оно, то уже только в видеокарту лезть Вначале переведите герцы нужные Вам в фпс, просчитайте скорость обработки одного кадра чисто математически - а потом уже начинайте реализацию логика отрисовки не сильно зависит от выбранного АПИ в данном случае, имхо. |
|
|
Алексей1153 |
19.10.2010, 6:22
Сообщение
#5
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
никаких жутких ухищрений не нужно, компутер успеет такую фигуру нарисовать и в динамике
параметрически кривая задана единственное, что надо сделать - задать инерцию люминофора. То есть просто точку гонять по кривой недостаточно - глаз не обманется. Надо запоминать шлейф на 1/24 секунды назад и отрисовывать эту линию тактировать можно таймером этак 40...200 мс Сообщение отредактировал Алексей1153 - 19.10.2010, 6:23 |
|
|
Litkevich Yuriy |
19.10.2010, 8:50
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
а потом окажется, что можно было делать через другой класс, который подходит лучше.)) а другого в Qt нету. QPainter - рисовальщик всех примитивов2. С помощью чего обновлять экран. Можно отталкиваться от QTimer. Но рационально ли это? 3. Как сделать остаточный след на экране (как в осциллографе, даже если двигать точку медленно, то все равно будет заметна светимость следа)? полностью имитировать работу осциллографа на компьютере не стоит.Для начала просто рисуй, пусть накладываются. Если дальше захочешь развивать программу там и видно будет. П.С. где-то у меня была программка на дельфи 4, которая именно фигуры Лисажу рисовала |
|
|
QMainWindow |
19.10.2010, 17:02
Сообщение
#7
|
Участник Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: 0 |
А OpenGL? Или пейнтера с головой хватит?
|
|
|
Алексей1153 |
19.10.2010, 19:13
Сообщение
#8
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
QMainWindow, ты сначала с QPainter сделай что-нибудь, а там увидим
|
|
|
QMainWindow |
27.10.2010, 20:13
Сообщение
#9
|
Участник Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: 0 |
Привет всем!
Короч только что написал прогу. Все хорошо получилось, делал через QPainter. Единственное, что осталось - это след на экране. Как правильно сделать - не знаю. На данный момент, чтобы изображение отображалось, в paintEvent записал цикл с N = 200. Но это все же не след. Вот тут говорили про буфер. Никогда не работал, не знаю как это работает. Какие классы хоть смотреть? |
|
|
Алексей1153 |
27.10.2010, 20:18
Сообщение
#10
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
QMainWindow, используй вектор
std::vector<QLine>(200) trace_buffer; организуй кольцо - заведи два итератора- один на начало следа, второй на конец отрисовав ломаную линию (кстати, по любасу метод есть, чтобы цепь QLine вывести разом) , делай сдвиг, выкидывая из начала несколько звеньев. А новые добавляй в конец. Приоритет делай для конца - если кольцо полностью забито, то выкидывай начальные и добавляй новые в конец можно ещё поиграться с градиентным цветом очередных линий (QLine), будет совсем как люминофор )) Сообщение отредактировал Алексей1153 - 29.10.2010, 8:58 |
|
|
Текстовая версия | Сейчас: 27.12.2024, 21:12 |