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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рисование графика с QWT 
:(
    Опции темы
pablo
Дата 10.11.2006, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 12.2.2005
Где: Вильнюс, Литва

Репутация: 4
Всего: 6



По умолчанию QWT рисует графики с начальной точки 0, можно ли как нить изменить эту точку, для рисования например параболы, а то по умолчанию видна только одна её сторона. 

Делаю вот как:

Код

#include <qapplication.h>
#include <qwt_plot.h>
#include <qwt_data.h>
#include <math.h>
#include <qwt_dimap.h>


#pragma comment(lib, "qwt.lib")

class SimpleData: public QwtData
{
public:
    SimpleData(double(*y)(double), size_t size): d_size(size), d_y(y)
    {
    }

    virtual QwtData *copy() const
    {
        return new SimpleData(d_y, d_size);
    }

    virtual size_t size() const
    {
        return d_size;
    }

    virtual double x(size_t i) const
    {
        return 0.1 * i;
    }

    virtual double y(size_t i) const
    {
        return d_y(x(i));
    }
private:
    size_t d_size;
    double(*d_y)(double);
};

class Plot : public QwtPlot
{
public:
    Plot();
};

double equation(double x)
{
    return x * x - x * 3.0 + 1.0;
}

Plot::Plot()
{
    setAutoLegend(TRUE); 
    setLegendPosition(QwtPlot::Right);

    setAxisTitle(xBottom, "x -->");
    setAxisTitle(yLeft, "y -->");
    
    long cEquation = insertCurve("y = x ^ 2 - 3 * x + 1");
    
    setCurvePen(cEquation, QPen(Qt::red));
    
    const int nPoints = 100;

    setCurveData(cEquation, SimpleData(equation, nPoints));

    replot();
}

int main(int argc, char **argv)
{
    QApplication a(argc, argv);

    Plot plot;
    a.setMainWidget(&plot);
    plot.resize(500,300);
    plot.show();
    return a.exec(); 
}



Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  untitled.JPG 26,42 Kb


--------------------
Первый блин всегда похож на сферу, иногда бывает и куб.
PM MAIL ICQ   Вверх
JackYF
Дата 10.11.2006, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



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

Но вообще это, конечно, вариант не очень...


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
pablo
Дата 10.11.2006, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 12.2.2005
Где: Вильнюс, Литва

Репутация: 4
Всего: 6



проблема решена, тема закрыта

Всё оказалось намного проще, при рисовании графика подаётся индекс точки в массиве, я же возвращаю координату х, до этого я просто умножал х на 0.1 изза этого график и рисовался с нуля. Надо только изменить ращёт координат вместо х * 0.1 написать что то такое -5 + х * 0.1 и увеличить количество точек графика.


--------------------
Первый блин всегда похож на сферу, иногда бывает и куб.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0508 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.