Рисование математических графиков в Dc

Тема в разделе "MS Visual C++", создана пользователем Neirol, 12 апр 2010.

  1. Neirol

    Neirol Гость

    Пытаюсь с помощью DC в MFC нарисовать параболу, как не пробую устанавливать значения - ее не видно совсем.
    Дайте пожалуйста пример рисования параболы, если начало координат, скажем 200 и 200.
     
  2. Odin_KG

    Odin_KG Гость

    Вы начните с того, что нарисуйте точку, а потом уже и до параболы доберетесь. А еще лучше давайте кусок кода, которым вы рисуете, потому что вряд ли все бросятся вспоминать, что такое парабола (я вот смутно вспоминаю :), но не уверен).
     
  3. Neirol

    Neirol Гость

    Парабола задается функцией y = x2 или y = ax2 + bx + c.
    Сам каркас графика и так рисую нормально.
    А вот саму параболу незнаю как правильно нарисовать, даже скорей отпозиционировать.
     
  4. Odin_KG

    Odin_KG Гость

    А в чем проблема? Допустим, вам нужно нарисовать параболу от x=-1000 до x=+1000. Создаете цикл где меняете x от -1000 до +1000 с определенным шагом (чем меньше шаг, тем качественнее). По X определяете Y. Имея X и Y можно поставить на экране точку или можно соединять прямой линией предыдущую точку с текущей. Если нужно рисовать с центром в 200,200, то просто перед рисованием прибавляете к X и Y по 200.

    Вот прямо тут написал вариантик (естественно, не проверял):

    Код (Text):
    int cx=200;
    int cy=200;
    double from=-1000;
    double to=1000;
    double step=1;

    double old_x=from;
    doulbe old_y=0;

    for (double x=from; x<to; x+=step)
    {
    double y=x*x;

    if (old_x!=from)
    {
    dc.MoveTo((int)(old_x+cx),(int)(old_y+cy));
    dc.LineTo((int)(x+cx),(int)(y+cy));
    }
    old_x=x;
    old_y=y;
    }
    Проверьте еще, чтобы у вас цвет пера (CPen) не был равен цвету фона графика, а то вы так ничего не увидите.
     
  5. Neirol

    Neirol Гость

    Вы хоть понимаете какие у вас получатся значения Y?
    Я о том и говорю, что они просто огромные.
    Если будет даже 100 по X, то игрек получается равен десятью тысячам.

    Добавлено: Хотя в принципе все верно. Я понял свою ошибку. Я добавлял координаты центра при рассчитывании икса по игреку.
    :ya_lamo:
     
  6. zeus

    zeus Гость

    то что ламо это точно... ты уже задавал примерно такой же вопрос в другом топике
    туго всасываешь :ya_lamo:
     
  7. Odin_KG

    Odin_KG Гость

    Вы
    Я понимаю, что вы не понимаете как масштаб добавить.

    double scale=0.001;

    dc.MoveTo((int)(old_x*scale+cx),(int)(old_y*scale+cy));
    dc.LineTo((int)(x*scale+cx),(int)(y*scale+cy));
     
Загрузка...
Похожие Темы - Рисование математических графиков
  1. ilya00
    Ответов:
    17
    Просмотров:
    1.782
  2. vladden
    Ответов:
    1
    Просмотров:
    1.843
  3. 123456789igor
    Ответов:
    1
    Просмотров:
    1.394
  4. sergg
    Ответов:
    11
    Просмотров:
    4.698
  5. bearpaw
    Ответов:
    6
    Просмотров:
    3.775

Поделиться этой страницей