AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Bräuchte Hilfe beim Zeichnen von u=u_t*cos(2*pi*f_t*t)
Thema durchsuchen
Ansicht
Themen-Optionen

Bräuchte Hilfe beim Zeichnen von u=u_t*cos(2*pi*f_t*t)

Ein Thema von Andre_Schmidt · begonnen am 20. Nov 2006 · letzter Beitrag vom 21. Nov 2006
Antwort Antwort
Andre_Schmidt

Registriert seit: 9. Aug 2006
9 Beiträge
 
#1

Bräuchte Hilfe beim Zeichnen von u=u_t*cos(2*pi*f_t*t)

  Alt 20. Nov 2006, 13:39
Hallo Leute....

ich hab mich gerade mal an einem graph probiert, und zwar möcht ich die Funktion u=u_t*cos(2*pi*f_t*t) zeichnen.
kann mir jemand ein wenig auf die sprünge helfen wie ich weiter verfahren könnte!?

Angenommen mein Canvas ist 100 Pixel breit ( b= 0..100) b=100 = 1ms, dann ist
t := 0.0001 * b/100; aber wie bring ich das mit in meinen quellcode rein



Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var x,y,u_t,f_t,t: real;
begin
x:=10;
u_t:=4; //Amplitude
f_t:=2; //Frequenz
  while x<100 do
  begin
    x:=x+0.01;
    y:=u_t*cos(2*pi*f_t*x); //Formel
    image1.canvas.pixels[round(x+50),round(-y+100)]:=clblack;
    image1.canvas.Rectangle(0,0,image1.Width,image1.Height);
  end;
end;

end.

gruß andre
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Bräuchte Hilfe beim Zeichnen von u=u_t*cos(2*pi*f_t*t)

  Alt 20. Nov 2006, 14:30
Wo liegt denn dein Problem? Die Funktion sieht schon mal ganz gut aus. Warum überzeichnest du aber das gesamtze Feld, nachdem du einen Punkt gesetzt hast? So wirst du nichts sehen können.
ich schlage so etas vor:

Delphi-Quellcode:
while x<100 do
  begin
    x:=x+0.01;
    y:=u_t*cos(2*pi*f_t*x); //Formel
    image1.canvas.Rectangle(0,0,image1.Width,image1.Height); // a
    image1.canvas.pixels[round(x+50),round(-y+100)]:=clblack;
    sleep(50); // damit siehst du wie die Funktion gezeichnet werden soll.
    

  end;
a sollte nur drin sein, wenn du sleep (oder delay...) in der Funktion hast, dann siehst du die einzelnen Punkte.

Auch solltest du nicht die Größe des Fenster hart einbauen. eher oben in eine Variable die Fenstergröße einlesen und dann unten in deinen zeichenbefehl einbauen. Alles andere ist recht hässlich und führt zu viel Arbeit, wenn du mal die Fenstergrößer andern willst.
Am Besten baust du dir gleich eine Funktion wie:

Delphi-Quellcode:
Procedure Funktionzeichnen(image: Tcanvas; sleeptime: integer; col: tcolor usw. );
begin
y=...
zeichnen;
sleep(sleeptime);
end;
Die kannst du dann immer benutzen, wenn du ein ähnliches Problem hast. Dann musst du nur etwas die Parameter an deine speziellee Funktion anpassen und die y=-Zeile anpassen. Das halte ich am programmiertechnisch schönsten.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Bräuchte Hilfe beim Zeichnen von u=u_t*cos(2*pi*f_t*t)

  Alt 21. Nov 2006, 09:20
Hast Du auch daran gedacht, dass Delphi bei Cos Bogenmaß zurück gibt?

Frank
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Bräuchte Hilfe beim Zeichnen von u=u_t*cos(2*pi*f_t*t)

  Alt 21. Nov 2006, 09:27
Meinst du vielleicht, dass cos einen Wert im Bogenmaß erwartet? Und mit dem Faktor 2\pi hat er das anscheinend auch gemacht.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: Bräuchte Hilfe beim Zeichnen von u=u_t*cos(2*pi*f_t*t)

  Alt 21. Nov 2006, 09:33
Unit

System

Kategorie

Trigonometrie

function Cos(X: Extended): Extended;

Beschreibung

Cos gibt den Cosinus des Winkels X im Bogenmaß zurück.
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Bräuchte Hilfe beim Zeichnen von u=u_t*cos(2*pi*f_t*t)

  Alt 21. Nov 2006, 09:45
Ich würde mal sagen, dass heisst eher:
Zitat:
Cos gibt den Cosinus des Winkels (X im Bogenmaß) zurück.
Was soll es denn bedeuten, dass die Funktionen einen Wert im Bogenmaß zurück gibt?
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#7

Re: Bräuchte Hilfe beim Zeichnen von u=u_t*cos(2*pi*f_t*t)

  Alt 21. Nov 2006, 11:56
Naja ich schreibe immer...

CX := cos(Winkel*180/Pi)

Daher liefert folgende procedure auch das "richtige" Ergebniss..
Delphi-Quellcode:
  for i:=0 to 360 do
    begin
      Form1.Canvas.MoveTo(100,100);
      Form1.Canvas.LineTo(trunc(sin(i*180/Pi)*100)+100,trunc(Cos(i*180/Pi)*100)+100);
    end;
Frank...
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Bräuchte Hilfe beim Zeichnen von u=u_t*cos(2*pi*f_t*t)

  Alt 21. Nov 2006, 12:10
Hallo Frank,

setze einmal die Zahl 90 als Schleifenendwert ein und prüfe, ob das Ergebnis immer noch stimmt.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#9

Re: Bräuchte Hilfe beim Zeichnen von u=u_t*cos(2*pi*f_t*t)

  Alt 21. Nov 2006, 13:16
Sorry dreeeeeeeer!!!

 Form1.Canvas.LineTo(trunc(sin(i*Pi/180)*100)+100,trunc(Cos(i*Pi/180)*100)+100); oder auch...

Delphi-Quellcode:
  Form1.Canvas.moveTo(trunc(sin(0*Pi/180)*100)+100,trunc(Cos(0*Pi/180)*100)+100);
  for i:=1 to 360 do
    begin
      Form1.Canvas.LineTo(trunc(sin(i*Pi/180)*100)+100,trunc(Cos(i*Pi/180)*100)+100);
    end;
Frank
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz