Zeichnen der Sinusfunktion im TImage

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
katt
Beiträge: 3
Registriert: Mi 30. Jan 2013, 20:44

Zeichnen der Sinusfunktion im TImage

Beitrag von katt »

Hallo,

ich bin dabei, ein Programm zu erstellen, welches (unter Anderem auch) eine Sinusfunktion zeichnet.

Ich habe allerdings ein theoretisches Problem:
Wenn ich den Graph zeichnen will, muss ich ja Pixel des Image ansprechen. Der für den Sinus ausgegebene Wert ist aber eine Kommazahl, damit können keine (ganzzahligen) Pixelwerte rauskommen.
Beim Kompilieren funktioniert es also wegen der Datentypen nicht.

Ich wäre über einen Denkanstoß sehr dankbar!

Grüße,
katt

Linkat
Lazarusforum e. V.
Beiträge: 560
Registriert: So 10. Sep 2006, 23:24
OS, Lazarus, FPC: Linux Mint 22; Lazarus 4.0 FPC 3.2.2; RaspiOS
CPU-Target: AMD 64, ARM 64
Wohnort: nr Stuttgart

Re: Zeichnen der Sinusfunktion im TImage

Beitrag von Linkat »

Hallo katt,
herzlich willkommen im Forum.
So kannst Kommazahlen in Integerzahlen umwandeln:

Code: Alles auswählen

i:=Round(r);
i:=Trunc(r);
 
Round rundet die Zahl (2,7 --> 3,0)
Trunc schneidet die Ziffern hinterm Komma ab.

Viel Spaß bei der Aufgabe.

Gruß, linkat
Linux Mint 21.3; Lazarus 3.4 FPC 3.2.2; RaspiOS

katt
Beiträge: 3
Registriert: Mi 30. Jan 2013, 20:44

Re: Zeichnen der Sinusfunktion im TImage

Beitrag von katt »

Erstmal danke, Linkat.

Die beiden Funktionen zum Runden kannte ich schon.
Das Problem ist, dass mein Koordinatensystem die Einheit 1 = 1 Pixel hat.
Ich schätze, ich muss das vergrößern, oder? Sonst wird der Wert ja stets auf 0 oder 1 gerundet, und das wird bei einer so kleinen Einteilung ja keine Kurve.

Grüße,
katt

Linkat
Lazarusforum e. V.
Beiträge: 560
Registriert: So 10. Sep 2006, 23:24
OS, Lazarus, FPC: Linux Mint 22; Lazarus 4.0 FPC 3.2.2; RaspiOS
CPU-Target: AMD 64, ARM 64
Wohnort: nr Stuttgart

Re: Zeichnen der Sinusfunktion im TImage

Beitrag von Linkat »

Hallo katt,
zur Darstellung deiner Kurve musst du eine Koordinatentransformation machen. Mit Hilfe des Dreisatzes musst du den Werte- und Definitionsbereich zu den Bildschirmkoordinaten (Pixel) deiner Sinuskurve ins richtige Verhältnis setzen. Aber bedenke, dass die y-Achse des Canvas nach unten gerichtet ist.

Gruß, Linkat
Linux Mint 21.3; Lazarus 3.4 FPC 3.2.2; RaspiOS

katt
Beiträge: 3
Registriert: Mi 30. Jan 2013, 20:44

Re: Zeichnen der Sinusfunktion im TImage

Beitrag von katt »

Linkat hat geschrieben:Mit Hilfe des Dreisatzes musst du den Werte- und Definitionsbereich zu den Bildschirmkoordinaten (Pixel) deiner Sinuskurve ins richtige Verhältnis setzen. Aber bedenke, dass die y-Achse des Canvas nach unten gerichtet ist.
Danke für den Tipp! Ich wollte das mit dem Verhältnis nur nochmal bestätigt haben. Ich habe ja auch schon lineare & quadratische Funktionen programmiert, daher weiß ich, wie das TImage funktioniert. :)

Einen schönen Abend noch,
katt

Benutzeravatar
jwdietrich
Beiträge: 173
Registriert: Mo 20. Okt 2008, 20:50
OS, Lazarus, FPC: macOS 10.4-14.1, Windows 2000-11, Raspbian (L 3.7.0, FPC 3.2.2)
CPU-Target: PowerPC, Intel, ARM
Wohnort: Hattingen, NRW
Kontaktdaten:

Re: Zeichnen der Sinusfunktion im TImage

Beitrag von jwdietrich »

Für die meisten Anwendungen wird es geschickter sein, die Sinusfunktion mit TAChart statt in ein TImage zu zeichnen.

Antworten