•  
  • 0
  •  
0

Помогите. необходим код для построения параболы на 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..

C++, построение параболы.
спросил 308 дней назад Аватор пользователя marvello marvello
30 2
изменил 306 дней назад Аватор пользователя tc tc
718 15
300

1 ответ:

    •  
    • 1
    •  

    Сам нашёл ошибку)))

        for (m_x=0;hp>=0 && wp<=w1 && hp<=h && wp>=0;m_x++)
        {
            h2=0;
            h2=0.1*m_a*m_x*m_x+m_b*m_x+10*m_c;
            MyDC.MoveTo(wp,hp);
            MyDC.LineTo(w+m_x,h1-h2);
            wp=w+m_x;
            hp=h1-h2;
        }
        for (m_x=0;hl>=0 && wl>=0 && hl<=h && wl<=w1;m_x--)
        {
            h2=0;
            h2=0.1*m_a*m_x*m_x+m_b*m_x+10*m_c;
            MyDC.MoveTo(wl,hl);
            MyDC.LineTo(w+m_x,h1-h2);
            wl=w+m_x;
            hl=h1-h2;
        }
    

    и всё получается очень даже хорошо)))

    Вики-ответ
    изменил 306 дней назад Аватор пользователя tc tc
    718 15
Чтобы написать ответ, вы должны авторизироваться.