Rysowanie funkcji liniowej

0
 float poczatek_x(float a)
{
return a;
}

float wartosc_koncowa(float a, float b)
{
return 3*poczatek_x(a)+b;
}

float wartosc_poczatkowa(float a, float b)
{
return 3*poczatek_x(a)*(-1)+b;
}

void __fastcall TForm1::PaintBox1Paint(TObject *Sender)
{
   PaintBox1->Canvas->MoveTo(0,200);
   PaintBox1->Canvas->LineTo(600,200);
   PaintBox1->Canvas->MoveTo(300,0);
   PaintBox1->Canvas->LineTo(300,400);
   //Nasz srodek to S=(300,200)
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
PaintBox1->Canvas->MoveTo(300+poczatek_x(StrToFloat(Edit1->Text)*(-1)),200-wartosc_poczatkowa(StrToFloat(Edit1->Text),-2));
PaintBox1->Canvas->LineTo(300+poczatek_x(StrToFloat(Edit1->Text)),200-wartosc_koncowa(StrToFloat(Edit1->Text),-2));
}

Wzór funkcji: y=3x-2

Moje pytanie brzmi, dlaczego przy Edit1->Text=20 czyli zakres od <-20;20> wykres przechodzi mi przez środek układu współrzędnych :/

Pozdrawiam!

0

Podbijam

0

a dlaczego nie skoro rysujesz linię o początku (300-61,200+62) i końcu (300+61, 200-62) czyli symetryczną względem środka...

0

W sumie masz rację, masz pomysł co mogę poprawić?

0
f(x) = 3x - 2

a = zakres
x0, y0 = srodek ukladu

x1 = x0 - a
y1 = y0 +/- f(-a)

x2 = x0 + a
y2 = y0 +/- f(a)

moveTo(x1, y1)
lineTo(x2, y2)

Cała filozofia.

0

No to tak mam

0

No i nie rozumiem problemu. Zauważ, że wykres po osi Y jest przesunięty tylko o 2 jednostki w dół od środka, czyli 2 piksele. Ale na pewno przez środek nie przechodzi.
Tak to wygląda?
http://www.wolframalpha.com/input/?i=3%28x+-+300%29+-+2+%2B+200+where+x+%3D+300

1 użytkowników online, w tym zalogowanych: 0, gości: 1