История изменнения вопроса «Помогите. необходим код для построения параболы на C++»

  • 2
    Версия №2
    изменил 825 дней назад Аватор пользователя tc tc
    718 15

    Помогите. необходим код для построения параболы на C++

    Необходимо построить координатную плоскость и на ней параболу.имеется квадратное уравнение. пользователь вводит в формы для ввода коэффициенты (a, b и c) при квадратном уравнении(a * x * x + b * x + c).

    CClientDC MyDC(GetDlgItem (IDC_STATIC1)); 
    CRect Rect;  // объявление объекта класса CRect
    CWnd *pWnd = MyDC.GetWindow();  
    //определение указателя на окно, занимаемое элементом "Static text"
    pWnd->GetClientRect( &Rect ); 
    // передаем размеры окна, занимаемое элементом "Static text" в 
    // объект Rect
    MyDC.FillSolidRect( &Rect, RGB(255,255,255) ); 
    // Рисуем закрашенный прямоугольник  в элементе "Static text"
    
    int w,h,w1,h1,m_x,h2,wp,wl,hp,hl,width,step,width1,height,height1;
    
    w=Rect.Width()/2;
    w1=Rect.Width();
    
    h=Rect.Height();
    h1=Rect.Height()/2;
    
    MyDC.MoveTo(w,0);
    MyDC.LineTo(w,h);
    
    MyDC.MoveTo(0,h1);
    MyDC.LineTo(w1,h1);
    
    for (step=0;width<w1-30;step+=10)
        {width=w+step;
    
    
    MyDC.MoveTo(width,h1-2);
    MyDC.LineTo(width,h1+3);
    
    height=h1+step;
    
    MyDC.MoveTo(w-2,height);
    MyDC.LineTo(w+3,height);
    
    width1=w-step;
    
    MyDC.MoveTo(width1,h1-2);
    MyDC.LineTo(width1,h1+3);
    
    height1=h1-step;
    
    MyDC.MoveTo(w-2,height1);
    MyDC.LineTo(w+3,height1);
    }
    

    MyDC.MoveTo(w,0); MyDC.LineTo(w+3,15); MyDC.MoveTo(w,0); MyDC.LineTo(w-3,15);

    MyDC.MoveTo(w1,h1); MyDC.LineTo(w1-15,h1+3); MyDC.MoveTo(w1,h1); MyDC.LineTo(w1-15,h1-3);

    MyDC.TextOut( w-15, h1+10,"0"); MyDC.TextOut( w1-15, h1+5,"x"); MyDC.TextOut( w-15, 1,"y");

    ma=IDCEDIT1/1000; mb=IDCEDIT2/1000; mc=IDCEDIT3/1000; UpdateData(1);

    wp=w; hp=h1, wl=w; hl=h1; for (mx=0;hp>=0 && wp<=w1 && hp<=h && wp>=0;mx++) {h2=ma*mxm_x+m_bmx+10*mc; MyDC.MoveTo(wp,hp); MyDC.LineTo(wp+mx,hp-h2); wp=wp+mx; hp=hp-h2; } mx=0; for (mx=0;hl>=0 && wl>=0 && hl<=h && wl<=w1;mx--) {h2=0.5*mam_xmx+mbm_x+10mc; MyDC.MoveTo(wl,hl); MyDC.LineTo(wl+mx,hl-h2); wl=wl+m_x; hl=hl-h2; }

    только вот рисует не всегда параболу почему-то.. не совсем то, что требуется... программа пишется на visual c++ 6.0. тип проекта MFC..

    построение параболы.
  • 1
    827 дней назад Аватор пользователя marvello marvello
    30 2

    Помогите. необходим код для построения параболы на C++

    Необходимо построить координатную плоскость и на ней параболу.имеется квадратное уравнение. пользователь вводит в формы для ввода коэффициенты (a, b и c) при квадратном уравнении(a * x * x + b * x + c).

    CClientDC MyDC(GetDlgItem (IDC_STATIC1)); 
    CRect Rect;  // объявление объекта класса CRect
    CWnd *pWnd = MyDC.GetWindow();  
    //определение указателя на окно, занимаемое элементом "Static text"
    pWnd->GetClientRect( &Rect ); 
    // передаем размеры окна, занимаемое элементом "Static text" в 
    // объект Rect
    MyDC.FillSolidRect( &Rect, RGB(255,255,255) ); 
    // Рисуем закрашенный прямоугольник  в элементе "Static text"
    
    int w,h,w1,h1,m_x,h2,wp,wl,hp,hl,width,step,width1,height,height1;
    
    w=Rect.Width()/2;
    w1=Rect.Width();
    
    h=Rect.Height();
    h1=Rect.Height()/2;
    
    MyDC.MoveTo(w,0);
    MyDC.LineTo(w,h);
    
    MyDC.MoveTo(0,h1);
    MyDC.LineTo(w1,h1);
    
    for (step=0;width<w1-30;step+=10)
        {width=w+step;
    
        MyDC.MoveTo(width,h1-2);
        MyDC.LineTo(width,h1+3);
    
        height=h1+step;
    
        MyDC.MoveTo(w-2,height);
        MyDC.LineTo(w+3,height);
    
        width1=w-step;
    
        MyDC.MoveTo(width1,h1-2);
        MyDC.LineTo(width1,h1+3);
    
        height1=h1-step;
    
        MyDC.MoveTo(w-2,height1);
        MyDC.LineTo(w+3,height1);
        }
    
    
    MyDC.MoveTo(w,0);
    MyDC.LineTo(w+3,15);
    MyDC.MoveTo(w,0);
    MyDC.LineTo(w-3,15);
    
    MyDC.MoveTo(w1,h1);
    MyDC.LineTo(w1-15,h1+3);
    MyDC.MoveTo(w1,h1);
    MyDC.LineTo(w1-15,h1-3);
    
    MyDC.TextOut( w-15, h1+10,"0");
    MyDC.TextOut( w1-15, h1+5,"x");
    MyDC.TextOut( w-15, 1,"y");
    
    m_a=IDC_EDIT1/1000;
    m_b=IDC_EDIT2/1000;
    m_c=IDC_EDIT3/1000;
    UpdateData(1);
    
    wp=w;
    hp=h1,
    wl=w;
    hl=h1;
        for (m_x=0;hp>=0 && wp<=w1 && hp<=h && wp>=0;m_x++)
         {h2=m_a*m_x*m_x+m_b*m_x+10*m_c;
          MyDC.MoveTo(wp,hp);
          MyDC.LineTo(wp+m_x,hp-h2);
          wp=wp+m_x;
          hp=hp-h2;
         }
    m_x=0;
     for (m_x=0;hl>=0 && wl>=0 && hl<=h && wl<=w1;m_x--)
     {h2=0.5*m_a*m_x*m_x+m_b*m_x+10*m_c;
     MyDC.MoveTo(wl,hl);
     MyDC.LineTo(wl+m_x,hl-h2);
     wl=wl+m_x;
     hl=hl-h2;
    }
    

    только вот рисует не всегда параболу почему-то.. не совсем то, что требуется... программа пишется на visual c++ 6.0. тип проекта MFC..