Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Система рисования. Печать _ Рисование графиков нелинейных функций

Автор: QMainWindow 4.9.2010, 23:16

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

Автор: Алексей1153 5.9.2010, 10:00

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

Задай конкретные вопросы

Автор: QMainWindow 5.9.2010, 18:52

Ну вот вопрос: как нарисовать, например, параболу? Я, честно говоря, знаю только один способ - взять нужный отрезок, разбить его, используя шаг разбиения ~0.001 или ~0.0001, создать double массив, в цикле записать координаты x и y=x^2, а потом отобразить его по точкам через метод drawLines(). А других методов нет?

Автор: Алексей1153 5.9.2010, 19:08

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

Автор: Litkevich Yuriy 5.9.2010, 19:27

Цитата(QMainWindow @ 5.9.2010, 22:52) *
А других методов нет?
по-моему их в природе не существует

Автор: Алексей1153 5.9.2010, 19:44

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

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

- вычисление точек по функции y(x), соединение отрезками
- вычисление точек по функции y(t), x(t) (параметрически) , соединение отрезками
- вычисление точек путём сканирования диапазона вывода и сравнения с заданной точностью

Автор: Litkevich Yuriy 5.9.2010, 19:49

Цитата(Алексей1153 @ 5.9.2010, 23:44) *
три штуки
все эти три штуки нужно будет потом по точкам построить. от этого никуда не денешься, компьютер не карандаш

Автор: Алексей1153 5.9.2010, 19:59

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

Автор: QMainWindow 12.9.2010, 16:00

Спасибо, собственно это и хотел узнать. Значит строить только отрезками.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)