5 Funkcja kwadratowa, Instrukcja 5 - funkcja kwadratowa - normalizacja


Instrukcja 5

Cel ćwiczenia : Napisanie aplikacji rysującej wykres funkcji kwadratowej.

0x01 graphic

Rys. 1 Widok formularza z umieszczonymi komponentami

  1. Uruchomić Delphi.

  1. Przejść do widoku kodu źródłowego przyciskiem F12.

  1. W części Interface (pod uses) umieścić następujący kod:

const Nmax = 10000;

ppX=25;

ppY=25;

type

wym = 1..Nmax;

TablWsp = Array[wym] of Real;

  1. W części private klasy TForm1 umieścić deklaracje zmiennych i nagłówki funkcji Normalizacja i Osie:

N,X0,Y0,ZX,ZY: Integer;

dx,xmin,xmax: Real;

xx,yy,X,Y: TablWsp;

a,b,c:double;

kolW,kolO,kolWyp : TColor;

procedure Normalizacja(N,A,B: Integer; xx,yy: TablWsp;

var X,Y: TablWsp);

procedure Osie(X0,Y0,A,B: Integer; x,y: String;T: TCanvas);

  1. W części implementation napisać definicje funkcji:

procedure TForm1.Normalizacja;

var

i: Integer;

dX,dY,G,Kx,Ky,xmin,xmax,ymin,ymax,Sx,Sy: Real;

begin

A:=A-2*ppx; B:=B-2*ppY;

xmin:=xx[1]; xmax:=xx[1];

ymin:=yy[1]; ymax:=yy[1];

for i:=2 to N do begin

if xx[i] < xmin then xmin:=xx[i];

if xx[i] > xmax then xmax:=xx[i];

if yy[i] < ymin then ymin:=yy[i];

if yy[i] > ymax then ymax:=yy[i];

end;

Sx:=xmax-xmin;

Sy:=ymax-ymin;

for i:=1 to N do begin

X[i]:=xx[i]-xmin;

Y[i]:=Abs(yy[i]-ymin-Sy);

end;

G:=1;

dX:=A-Sx;

dY:=B-Sy;

if dX/A <= dY/B then begin

Kx:=A/Sx;

Ky:=G*Kx;

end

else begin

Ky:=B/Sy;

Kx:=Ky/G

end;

for i:=1 to N do begin

X[i]:=Kx*X[i]+ppX;

Y[i]:=Ky*Y[i]+ppY;

end;

end;

procedure TForm1.Osie;

begin

with T do begin

MoveTo(0,Y0);

LineTo(A,Y0);

LineTo(A-8,Y0-3);

LineTo(A,Y0);

LineTo(A-8,Y0+3);

TexTout(A-15,Y0+6,x);

MoveTo(X0,B);

LineTo(X0,0);

LineTo(X0-3,8);

MoveTo(X0,0);

LineTo(X0+3,8);

TextOut(X0-11,9,y);

end;

end;

  1. Umieścić na formularzu komponent Image i ustawić następujące parametry:

  1. Umieścić na formatce komponent Button i ustawić własność Caption na Rysuj.

  1. Umieścić na formatce 6 komponentów Edit i ustawić parametry według następujących wskazówek:

Domyslna nazwa:

Zmienić własność name na:

Zmienić własność tekst na:

Edit1

EN

50

Edit2

Exmin

-1,5

Edit3

Exmax

1,5

Edit4

Ea

1

Edit5

Eb

1

Edit6

Ec

1

  1. Obok komponentów Edit można umieścić komponenty Label w celu opisania, który komponent odpowiada za poszczególne zmienne.

  1. Wygenerować zdarzenie OnClick dla komponentu Buton i wpisać następujący kod:

procedure TForm1.Button1Click(Sender: TObject);

var

i:integer;

begin

N:=StrToInt(EN.Text);

xmin:=StrToFloat(Exmin.Text);

xmax:=StrToFloat(Exmax.Text);

a:=StrToFloat(Ea.Text);

b:=StrToFloat(Eb.Text);

c:=StrToFloat(Ec.Text);

with Image1.Canvas do begin

//czyszczenie okna

Brush.Color:=kolWyp;

Brush.Style:=bsSolid;

FillRect(Rect(0,0,Image1.Width,Image1.Height));

//wykres

xx[1]:=0; yy[1]:=0;

dx:=(xmax-xmin)/N;

for i:=0 to N do begin

xx[i+2]:=xmin+i*dx;

yy[i+2]:=a*xx[i+2]*xx[i+2]+b*xx[i+2]+c;

end;

ZX:=Image1.Width; ZY:=Image1.Height;

Normalizacja(N+2,Image1.Width,Image1.Height,xx,yy,X,Y);

X0:=Round(X[1]); Y0:=Round(Y[1]);

Pen.Color:=kolO;

Osie(X0,Y0,ZX,ZY,'x','y',Image1.Canvas);

Pen.Color:=kolW;

MoveTo(Round(X[2]),Round(Y[2]));

for i:=3 to N+2 do

LineTo(Round(X[i]),Round(Y[i]));

end;

end;

  1. Wygenerować zdarzenie OnCreate dla komponentu Form1 i wpisać następujący kod:

procedure TForm1.FormCreate(Sender: TObject);

begin

kolW:=clBlack;

kolO:=clBlue;

kolWyp:=clWhite;

end;

  1. Umieścić komponenty: RadioGroup, Button, ColorDialog.

  2. Wybrać własność Items dla RadioGroup i wpisać następujące pozycje:

kolor wykresu

kolor osi

kolor wypełnienia

Własność ItemIndex dla RadioGroup1 ustawić na 0, natomiast własność Caption ustawić na pustą.

  1. Własność Caption dla przycisku Button ustawić na: Wybór koloru.

  1. Wygenerować zdarzenie OnClick dla przycisku i wpisać następujący kod odpowiedzialny za wybór koloru.

procedure TForm1.Button2Click(Sender: TObject);

begin

case RadioGroup1.ItemIndex of

0 : begin

if Colordialog1.Execute then

kolW:=ColorDialog1.Color;

end;

1 : begin

if Colordialog1.Execute then

kolO:=ColorDialog1.Color;

end;

2 : begin

if Colordialog1.Execute then

kolWyp:=ColorDialog1.Color;

end;

end;

end;

14. Skompilować i uruchomić program przyciskiem F9 na klawiaturze komputera.

0x01 graphic

Rys. 2 Uruchomiony program

5



Wyszukiwarka

Podobne podstrony:
5 Funkcja kwadratowa, Instrukcja 5 funkcja kwadratowa normalizacja
Postać kanoniczna funkcji kwadratowej
Funkcja kwadratowa
funkcja kwadratowa praca klasowa
FUNKCJA KWADRATOWA teoria oraz zadania
Funkcja kwadratowa, matematyka
funkcja kwadratowa, Technikum, Matematyka
Matematyka Funkcja kwadratowa
zadania funkcja kwadratowa
2 Funkcje liniowe kwadratowe wielomianowe
4 Funkcja kwadratowa
Wartości funkcji t-Studenta, chi-kwadrat i współczynnika korelacji prostej(Pearsona)
225 Miejsca Zerowe Funkcji Kwadratowej
FUNKCJA KWADRATOWA, Matematyka
funkcja kwadratowa (2), Matematyka, Liceum
Własności funkcji kwadratowej
274 zadania funkcje kwadratowe

więcej podobnych podstron