crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Рисование графиков нелинейных функций, Какие есть стандартные инструменты?
QMainWindow
  опции профиля:
сообщение 4.9.2010, 23:16
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 1.8.2010
Пользователь №: 1922

Спасибо сказали: 0 раз(а)




Репутация:   0  


Добрый день! Вопрос в названии темы. Под стандартными инструментами подразумеваю QPainter и все что с ним связано. Можно конечно взять некоторую функцию, выбрать шаг дискретизации и записать полученные значения в массив, а потом отобразить его. Но это изврат. Может как-то использовать кривые Безье? Правда понятия не имею, как на них рисовать корень, параболу, лог и тд... Если кто рисовал функции через QPainter, подскажите как! :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 5.9.2010, 10:00
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2879
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


QMainWindow, абсолютно всё рисуется "через QPainter" (вернее - через инкапсулированные в нём API ОС). И именно изврат с записью в массив, а потом только отображением - позволяет повысить производительность программы :)

Задай конкретные вопросы
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QMainWindow
  опции профиля:
сообщение 5.9.2010, 18:52
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 1.8.2010
Пользователь №: 1922

Спасибо сказали: 0 раз(а)




Репутация:   0  


Ну вот вопрос: как нарисовать, например, параболу? Я, честно говоря, знаю только один способ - взять нужный отрезок, разбить его, используя шаг разбиения ~0.001 или ~0.0001, создать double массив, в цикле записать координаты x и y=x^2, а потом отобразить его по точкам через метод drawLines(). А других методов нет?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 5.9.2010, 19:08
Сообщение #4


фрилансер
******

Группа: Участник
Сообщений: 2879
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


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

Сообщение отредактировал Алексей1153 - 5.9.2010, 19:09
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.9.2010, 19:27
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9655
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(QMainWindow @ 5.9.2010, 22:52) *
А других методов нет?
по-моему их в природе не существует
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 5.9.2010, 19:44
Сообщение #6


фрилансер
******

Группа: Участник
Сообщений: 2879
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(Litkevich Yuriy @ 5.9.2010, 22:27) *
по-моему их в природе не существует

в голову приходят крайней мере три штуки, все с плюсами и минусами:

- вычисление точек по функции y(x), соединение отрезками
- вычисление точек по функции y(t), x(t) (параметрически) , соединение отрезками
- вычисление точек путём сканирования диапазона вывода и сравнения с заданной точностью
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.9.2010, 19:49
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9655
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Алексей1153 @ 5.9.2010, 23:44) *
три штуки
все эти три штуки нужно будет потом по точкам построить. от этого никуда не денешься, компьютер не карандаш
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 5.9.2010, 19:59
Сообщение #8


фрилансер
******

Группа: Участник
Сообщений: 2879
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


первые два - строятся отрезками, третий - пикселами (или прямоугольниками, если точность слоновая).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QMainWindow
  опции профиля:
сообщение 12.9.2010, 16:00
Сообщение #9


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 1.8.2010
Пользователь №: 1922

Спасибо сказали: 0 раз(а)




Репутация:   0  


Спасибо, собственно это и хотел узнать. Значит строить только отрезками.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.6.2019, 11:06