Witam, jako program zaliczeniowy wybrałem sobie rysowanie funkcji jednak mam kłopot z funkcjami tan i ctg. Bardzo prosił bym o pomoc jak to napisać.
Kombinowałem trochę z podstawową własnością tan = sin(x)/cos(x) ale ciągle wyskakuje mi błąd może pomożecie.
Pozdrawiam i dziękuję z góry
Piotrek
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i,y:integer;
begin
for i:=0 to form1.Width-40 do
begin
y:=round(form1.height/2)-round(150*sin(i*2*3.14159/(form1.Width-40)));
canvas.pixels[i+20,y]:=clblue;
end;
canvas.MoveTo(20,20);
canvas.lineTo(20,form1.Height-20);
canvas.MoveTo(20,round(form1.Height/2));
canvas.lineTo(round(form1.Width)-20,round(form1.Height/2));
canvas.moveto(20,30);
canvas.lineto(25,30);
canvas.lineto(20,20);
canvas.lineto(15,30);
canvas.lineto(20,30);
canvas.moveto(745,255);
canvas.lineto(745, 250);
canvas.lineto(755, 255);
canvas.lineto(745,260);
canvas.lineto(745, 255);
Canvas.TextOut(25, 260, '0'); // "0"
Canvas.TextOut(195, 260, 'Pi/2'); // Pi/2
Canvas.TextOut(400, 260, 'Pi'); // Pi
Canvas.TextOut(550, 260, '(3/2*Pi)'); // (3/2)*Pi
Canvas.TextOut(720, 260, '2*Pi'); // 2*Pi
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i,y:integer;
begin
for i:=0 to form1.Width-40 do
begin
y:=round(form1.height/2)-round(150*cos(i*2*3.14159/(form1.Width-40)));
canvas.pixels[i+20,y]:=clred;
end;
canvas.MoveTo(20,20);
canvas.lineTo(20,form1.Height-20);
canvas.MoveTo(20,round(form1.Height/2));
canvas.lineTo(round(form1.Width)-20,round(form1.Height/2));
canvas.moveto(20,30);
canvas.lineto(25,30);
canvas.lineto(20,20);
canvas.lineto(15,30);
canvas.lineto(20,30);
canvas.moveto(745,255);
canvas.lineto(745, 250);
canvas.lineto(755, 255);
canvas.lineto(745,260);
canvas.lineto(745, 255);
Canvas.TextOut(25, 260, '0'); // "0"
Canvas.TextOut(195, 260, 'Pi/2'); // Pi/2
Canvas.TextOut(400, 260, 'Pi'); // Pi
Canvas.TextOut(550, 260, '(3/2*Pi)'); // (3/2)*Pi
Canvas.TextOut(720, 260, '2*Pi'); // 2*Pi
end;
procedure TForm1.Button3Click(Sender: TObject);
var
i,y:integer;
begin
for i:=0 to form1.Width-40 do
begin
y:=round(form1.height/2)-round(150*cos(2*i*2*3.14159/(form1.Width-40)));
canvas.pixels[i+20,y]:=clgreen;
end;
canvas.MoveTo(20,20);
canvas.lineTo(20,form1.Height-20);
canvas.MoveTo(20,round(form1.Height/2));
canvas.lineTo(round(form1.Width)-20,round(form1.Height/2));
canvas.moveto(20,30);
canvas.lineto(25,30);
canvas.lineto(20,20);
canvas.lineto(15,30);
canvas.lineto(20,30);
canvas.moveto(745,255);
canvas.lineto(745, 250);
canvas.lineto(755, 255);
canvas.lineto(745,260);
canvas.lineto(745, 255);
Canvas.TextOut(25, 260, '0'); // "0"
Canvas.TextOut(195, 260, 'Pi/2'); // Pi/2
Canvas.TextOut(400, 260, 'Pi'); // Pi
Canvas.TextOut(550, 260, '(3/2*Pi)'); // (3/2)*Pi
Canvas.TextOut(720, 260, '2*Pi'); // 2*Pi
end;
end.