Registriert seit: 18. Dez 2009
2 Beiträge
|
TCanvas : Sinuskurve
18. Dez 2009, 20:03
hi Leute. Bestimmt haben schon viele, viele unwissende Fragen zur Darstellung einer Sinusfunktion gestellt. Ich bin leider kein pro aber dafür Blond Mein Hauptproblem ist, dass die Sinuskurve nur als gestrichelte Linie oder Punkte dargestellt wird. Ok, eine Lösung hätte ich selber : Bogenmaß nutzen, spich Pie statt Grad. Aber wie genau setz ich das ein? Statt y=a*sin(b*x+c)+d lieber so ?? : y=a*sin(b*detograd(x)+c)+d ? oder y=a*sin(b*x*(Pie/180°)+c)+d ??? Leider hab ich kein Delphi auf meinem Rechner und kann somit nur theoretisch arbeiten. Könnte mir bitte jemand helfen?
Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
var h,j,x,e1,e2,e3,e4:integer;
a,b,c,d,y:real;
begin
FOR j:=1 to 300 do
begin
form1.canvas.pixels[30,30+j]:=clblack;
if j<=20 then
begin
form1.Canvas.Pixels[30-j,30+j]:=clblack;
form1.Canvas.Pixels[50-j,50-j]:=clblack;
end;
end;
for h:=1 to 550 do
begin
form1.canvas.pixels[20+h,320]:=clblack;
if h<=20 then
begin
form1.canvas.pixels[570-h,320+h]:=clblack;
form1.canvas.pixels[570-h,320-h]:=clblack;
end;
end;
val(edit1.Text,a,e1);
val(edit2.Text,b,e2);
val(edit3.Text,c,e3);
val(edit4.Text,d,e4);
if (e1<>0) and (e2<>0) and (e3<>0) and (e4<>0) then
begin
application.MessageBox('Falsche Eingabe','Fehler',MB_ok);
end
else
begin
for x:=30 to 550 do
begin
y:=a*sin(b*x + c)+d;
form1.Canvas.Pixels[30+round(100*y),320]:=clblack;
end;
end;
end;
[edit=Luckie]Delphi Code Tags ergänzt. Mfg, Luckie[/edit]
|
|
Zitat
|