Курсовая работа: Построение графиков функций
for(a=1;a<(KolLY-1);a++) {
sss.Format(_T("%.3f"),vFunc.MinY+a*d);
pDCbuf->TextOut(OtstX-3-7*sss.GetLength(),OtstY+DlOY-(int)(a*dd)-7,sss);
}
sss.Format(_T("%.3f"),vFunc.MinY);
pDCbuf->TextOut(OtstX-3-7*sss.GetLength(),OtstY+DlOY-12,sss);
sss.Format(_T("%.3f"),vFunc.MaxY); a=KolLY-1;
pDCbuf->TextOut(OtstX-3-7*sss.GetLength(),OtstY+DlOY-(int)(a*dd)-7,sss);
//Подпись "График функции..."
sss.Format(_T(" на отрезке [%.2f,%.2f]"),X1,X2);
pDCbuf->TextOut(OtstX+80-2*sFunc.GetLength(),OtstY-25,(_T("График функции f(x)=")+sFunc+sss));
//Вычисления коэффициентов сжатия на экране KoefX и KoefY
KoefX=((double)DlOX)/(X2-X1);
KoefY=((double)DlOY)/(vFunc.MaxY-vFunc.MinY);
//Рисование осей X и Y
pDCbuf->SelectObject(cvet2);
if(X1<=0&&X2>=0) {
pDCbuf->MoveTo(OtstX-(int)(X1*KoefX),OtstY);
pDCbuf->LineTo(OtstX-(int)(X1*KoefX),OtstY+DlOY);
}
if(vFunc.MinY<=0&&vFunc.MaxY>=0) {
pDCbuf->MoveTo(OtstX,OtstY+DlOY+(int)(KoefY*vFunc.MinY));
pDCbuf->LineTo(OtstX+DlOX,OtstY+DlOY+(int)(KoefY*vFunc.MinY));
}
//Рисование самого графика функции
pDCbuf->SelectObject(cvet3);
for(a=1;a<vFunc.KolT;a++) {
if(vFunc.FYYER[a-1]==FALSE&&vFunc.FYYER[a]==FALSE) {
pDCbuf->MoveTo(OtstX+(int)(KoefX*(vFunc.FXX[a-1]-X1)),OtstY+DlOY-(int)(KoefY*(vFunc.FYY[a-1]-vFunc.MinY)));