wykres w image??

0

pisze program symuljący namiecia w szeregownym ukladzie rlc
mam problem z osia y=asin(xt) ma na dlugośc 400 pikseli nie umiem wyskalowac jej kiedy asyplota jest za duza i za mala i dopisac jednostek próbowalem stosowac while ale jakos nie wypalalo
to kawalek kodu

Form1->Image1->Height=400;
Form1->Image1->Width=600;
r=StrToFloat(Edit1->Text);
while(x<=3.1416)
{
x+=0.001;
y=r
sin(xf);
y1=y;
while(y1>=180) {a
=0.1;y1=ay1;} ;
Form1->Image1->Canvas->LineTo(30+20
x,200+y1);} }</b>

0

zapamiętujesz w tablicy obliczasz minimum i maksimum. Na tej podstawie dobierasz skalowanie osi i rysujesz korzystając z tablicy.

0

Jak łatwo ze wzoru odczytać minimum to min_y=-a, natomiast maksimum to max_y=a. Funkcje rysujesz dla argumentów od min_x=ilestam do max_x=3.14*16 (użyj stałej M_PI zamiast 3.14).

Dowolną funkcję y=f(x) ograniczoną przez min_y, max_y, min_x, max_x narysujesz wyskalowaną w prostokącie o współrzędnych (L, T) i wymiarach (W, H) takim algorytmem:

double dx = max_x - min_x;
double dy = max_y - min_y;

//pierwszy punkt, to co w pętli poniżej dla i = 0 oraz zamiast LineTo jest MoveTo:
Form1->Image1->Canvas->MoveTo(L, T + floor((H - 1) * ((max_y - f(min_x)) / dy) + 0.5));

for (int i = 1; i < W; i++) //'i' to numer kolejnego rysowanego punktu (rysujemy co jeden piksel)
{
   int ix = i + L; //współrzędna x na obrazku
   double x = min_x + dx * i / (W - 1); //współrzędna x w układzie współrzędnych
   double y = f(x); //współrzędna y w układzie współrzędnych
   int iy = T + floor((H - 1) * ((max_y - y) / dy) + 0.5); //współrzędna y na obrazku

   Form1->Image1->Canvas->LineTo(ix, iy);

   //bez rozpisywania:
   //Form1->Image1->Canvas->LineTo(i + L, T + floor((H - 1) * ((max_y - f(min_x + dx * i / (W - 1))) / dy) + 0.5));
}

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