Problem z wyskalowaniem wykresu

danielk32
Użytkownik
Użytkownik
Posty: 64
Rejestracja: 3 kwie 2009, o 13:41
Płeć: Mężczyzna
Podziękował: 15 razy

Problem z wyskalowaniem wykresu

Post autor: danielk32 »

Mam prośbę potrzebuje narysować wykres funkcji kwadratowej. Coś zrobiłem ale jeszcze to nie to... wykres nie jest taki jak powinien:

masa zmiennych pomocniczych
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <math.h>
#include <Math.hpp>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

TForm1 *Form1;
float xmin, xmax, ymin, ymax, hmax, hmin, i;
float a, b, c, dx, dy, yw, xw, delta, ym1, ym2,y; //wierzcholki

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Canvas->MoveTo(200,200); //rysuje os
Canvas->LineTo(600,200);
Canvas->MoveTo(400,10);
Canvas->LineTo(400,400);


xmin=200.0;xmax=600.0;ymin=10.0;ymax=400.0;




a=StrToFloat(Edit1->Text); //przypisywanie wartosci editowi
b=StrToFloat(Edit2->Text);
c=StrToFloat(Edit3->Text);

delta=(pow(b,2)-(4*(a*c)));
yw=(-delta)/(4*a);

ym1=a*pow(10,2)+b*10+c;
ym2=a*pow(-10,2)+b*(-10)+c;

if (ym1>ym2) hmax=ym1; else hmax=ym2;

hmin=yw;

dy=((hmax-hmin)/(ymax-ymin))*1.0;

//if(dy<0) dy=dy*(-1);

dx = (10/(xmax-xmin))*1.0;

//s=s0+v0*t+(a*t*t)/2;

// yv = v0*t-((g*pow(t,2))/2.0);


y=ymax-((ymax-ymin)/ym1)*(a*pow(dx*1,2)+(b*dx*1)+c);
Canvas->MoveTo(200,y);
for(float i=0;i<=(xmax-xmin);i++)
{
//y=ymax-((ymax-ymin)/s)*(s0+v0*dx*i+(a/2.0)*pow(dx*i,2));

// y=ymax-((ymax-ymin)/yv)*((v0*dx*i*sin(alfa))-((g*pow(dx*i,2))/2.0));
y=ymax-((ymax-ymin)/ym1)*(a*pow(dx*i,2)+(b*dx*i)+c);
Canvas->LineTo(xmin+i,y);
}


}
//---------------------------------------------------------------------------
ODPOWIEDZ