wykres y=exp(2x^2)

0

potrzebuje pomocy nie wiem w ogóle jak to zrobic, z gory dzieki za pomoc :) gg8401183 [email protected]

0

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Spin, ComCtrls, Menus;

type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
Label2: TLabel;
Button2: TButton;
Button3: TButton;
SpinEdit1: TSpinEdit;
Image1: TImage;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public

{ Public declarations }

end;
funkcja=function(x:real):real; //deklaracja typu funkcyjnego

var
Form1: TForm1;
dx:integer; //wielkość jednostki
ox,oy:integer;
uklad:boolean;
a,b,c:double;

implementation

{$R *.DFM}

procedure czysc;
begin
uklad:=False;
Form1.Image1.Picture:=nil;
end;

procedure rysuj_uklad;
begin
with Form1.Image1.Canvas do
begin
//oś ox
Moveto(0,oy);
Lineto(Form1.Width,oy);
//strzałka
Lineto(Form1.Width-15,oy-5);
Moveto(Form1.Width,oy);
Lineto(Form1.Width-15,oy+5);
//oś oy
Moveto(ox,0);
Lineto(ox,Form1.Height);
//strzałka
Moveto(ox,0);
Lineto(ox-5,10);
Moveto(ox,0);
Lineto(ox+5,10);
end;
end;

procedure jednostki;
var i:integer;
x,y:integer;
begin
x:=ox;
y:=oy+10;
Form1.Image1.Canvas.TextOut(x,y,'0');
//oś ox
for i:= 1 to round(ox/dx)do
begin
x:=x+dx;
Form1.Image1.Canvas.TextOut(x-2,y,inttostr(i));
Form1.Image1.Canvas.Moveto(x,y-13);
Form1.Image1.Canvas.Lineto(x,y-3);
end;
x:=ox;
for i:= -1 downto -round(ox/dx)do
begin
x:=x-dx;
Form1.Image1.Canvas.TextOut(x-6,y,inttostr(i));
Form1.Image1.Canvas.Moveto(x,y-13);
Form1.Image1.Canvas.Lineto(x,y-3);
end;
//oś y
y:=oy;
x:=ox ;
for i:= 1 to Round(oy/dx)do
begin
y:=y-dx;
Form1.Image1.Canvas.TextOut(x+8,y-10,IntToStr(i));
Form1.Image1.Canvas.MoveTo(x-3,y);
Form1.Image1.Canvas.LineTo(x+3,y);
end;
y:=oy;
for i:= -1 downto -round(oy/dx)do
begin
y:=y+dx;
Form1.Image1.Canvas.Textout(x+8,y-10,IntToStr(i));
Form1.Image1.Canvas.Moveto(x-3,y);
Form1.Image1.Canvas.Lineto(x+3,y);
end;
end;

function funkcjaa(x:real):real;
begin
funkcjaa:=exp(2xx);
end;

function cosx(x:real):real;
begin
cosx:=cos(x)
end;

procedure wykres(f:funkcja; kolor:TColor);
var
x,y:real; //współrzędne matematyczne
xf,yf,h:integer;//współrzędne ekranowe,
begin
try
h:=1;
xf:=ox;
x:=0;
y:=f(x);
yf:=oy-round(y/dx);
Form1.Image1.Canvas.Pixels[xf,yf]:=kolor;
//rysowanie wykresu na dodatniej półosi ox
while xf<2ox do
begin
xf:=xf+h;
x:=(xf-ox)/dx;
y:=f(x);
yf:=round(oy-y
dx);
Form1.Image1.Canvas.Pixels[xf,yf]:=kolor;
end;
xf:=ox;
x:=0;
y:=f(x);
yf:=oy-round(y/dx);
Form1.Image1.Canvas.Pixels[xf,yf]:=kolor;
except
end;
end;

//funkcje obsługi zdarzeń

procedure TForm1.FormActivate(Sender: TObject);
begin
uklad:=False;
Form1.Color:=clWhite;
ox:=Form1.Width div 2; //współrzędna x osi y
oy:=(Form1.Height - Panel1.Height) div 2;//współrzędna y osi x
dx:=ox;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
if SpinEdit1.Value> 0 then
dx:=round(ox/SpinEdit1.Value);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
czysc;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
if not uklad then
begin
czysc;
rysuj_uklad;
jednostki;
end;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
uklad:=False;
Form1.Color:=clWhite;
ox:=Form1.Width div 2; //współrzędna x osi y
oy:=(Form1.Height - Panel1.Height) div 2;//współrzędna y osi x
dx:=ox;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
wykres(funkcjaa, clBlue)
end;

end.

0

dzieki wielkie ale wiesz jestem zielony w tym temacie... i za duzo mi to nie pomoglo, jak by ktos mi przeslal kawalek kodu bylbym dozgonnie wdzieczny...

0

dzieki wielkie ale wiesz jestem zielony w tym temacie... i za duzo mi to nie pomoglo, jak by ktos mi przeslal kawalek kodu bylbym dozgonnie wdzieczny...

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