AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit Sinus Darstellung

Ein Thema von Chris211183 · begonnen am 24. Feb 2015 · letzter Beitrag vom 4. Mär 2015
Antwort Antwort
Headbucket

Registriert seit: 12. Dez 2013
Ort: Dresden
172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: Probleme mit Sinus Darstellung

  Alt 25. Feb 2015, 10:26
Also irgendwie verstehe ich nicht, wo aktuell das Problem liegt bzw. was du überhaupt GENAU machen möchtest.
Kannst du das vllt nochmal genauer beschreiben?

Zum Zeichnen kann man das Canvas-Objekt verwenden. Dazu solltest du reichlich informationen über Google finden.
Ein Beispiel zum Zeichnen einer Sinusfunktion (eine Periode) habe ich dir bereits gegeben. Hast du dir das Beispiel angeschaut? Gibt es dazu fragen?
Wenn du das Beispiel verstehst sollte doch alles klar sein?

Mit Canvas.LineTo(X, Y) zeichnest du eine Linie von der aktuellen Position zum Punkt X,Y. Die aktuelle Position änderst du mit Canvas.MoveTo(X, Y).
Genau das habe ich in meinem Beispiel auch gemacht.
Zunächst die Position auf den Nullpunkt gelegt und danach für alle X-Werte den Y-Wert berechnet und gezeichnet.

Natürlich kannst du die X- und Y-Werte auch vorher berechnen und in ein Array schmeißen. Dann musst du lediglich über eine Schleife die Werte aus den Array auslesen und mit LineTo zeichnen.

Grüße
Headbucket
  Mit Zitat antworten Zitat
Chris211183

Registriert seit: 19. Sep 2013
Ort: Braunschweig
204 Beiträge
 
Delphi 6 Professional
 
#2

AW: Probleme mit Sinus Darstellung

  Alt 25. Feb 2015, 10:58
Hi,

das zeichnen an sich ist kein Problem, über canvas habe ich ja meine Komponente gezeichnet.

Ich möchte jediglich mit meiner Komponente später Messwerte (wie ein Oszilloskop) anzeigen lassen.
Jetzt geht es mir darum, wie man das am besten und wie programmiert, damit diese das auch später macht.
Ich bin nur Hobbyprogrammierer und bin daher nicht so fit in den Dingen, bring mir das alles selbst bei und daher auch manchmal so wirre und "dusselige" Fragen !

Christian
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#3

AW: Probleme mit Sinus Darstellung

  Alt 25. Feb 2015, 11:05
Hier z.B. werden die Punkte zunächst errechnet, in einem Array gespeichert und dann mit TCanvas.PolyLine in einem Rutsch gezeichnet.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Chris211183

Registriert seit: 19. Sep 2013
Ort: Braunschweig
204 Beiträge
 
Delphi 6 Professional
 
#4

AW: Probleme mit Sinus Darstellung

  Alt 25. Feb 2015, 11:10
Genau sowas habe ich gesucht !!! Super Klasse, danke euch für eure Mühe !!!
Christian
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Probleme mit Sinus Darstellung

  Alt 25. Feb 2015, 11:34
Möchtest du eine stehende Welle zeichnen oder eine simple Sinuskurve? Vom Graph her sieht die Kurve am besten aus wenn man je Pixel X einen Y-Wert berechnet und zeichnet (for I := 0 to Width -1 do). Man braucht Skalierungsfunctions die Pixel in Funktionswerte umrechnen und umgekehrt. Üblicherweise gibt man bei einem Mouse Move über die Grafik die entsprechenden Werte in z.B. einer Statusbar numerisch aus (X = .. / Y = ..).
  Mit Zitat antworten Zitat
Chris211183

Registriert seit: 19. Sep 2013
Ort: Braunschweig
204 Beiträge
 
Delphi 6 Professional
 
#6

AW: Probleme mit Sinus Darstellung

  Alt 26. Feb 2015, 10:30
Hi, ich möchte eine stehende Welle zeichnen !

Dein Vorschlag klingt sehr gut, jedoch übersteigt das meine Programmierkenntnisse bei weitem.
Christian
  Mit Zitat antworten Zitat
Chris211183

Registriert seit: 19. Sep 2013
Ort: Braunschweig
204 Beiträge
 
Delphi 6 Professional
 
#7

AW: Probleme mit Sinus Darstellung

  Alt 26. Feb 2015, 12:05
Hier mal mein Code, im Anhang ein Screenshot:

Prinzipiell das, was es machen soll, sieht bloß ekelig aus

Delphi-Quellcode:
FPoints : Array[0..144] of TPoint;
.
.
.
procedure THixHistoGraph.DrawGridScale;

var
XRangePixels, YRangePixels: Double;
Start: TPoint;
Radian, Interval: Double;
i : Integer;

begin
   XRangePixels := (Width - GapLeft- GapRight) / (FXScale.ValGap);
   YRangePixels := (Height - GapTop - GapBottom) / (FYScale.ValGap);
   Start := Point(GapLeft, Height - GapBottom);
   Radian := (FXScale.ValMin) * PI;
   Interval := (FXScale.ValMax + FXScale.ValMin) * PI / 144;

   for i:= 0 to High(FPoints) do
   begin
     FPoints[i].X := Start.X + round(Radian * xRangePixels / Pi);
     FPoints[i].Y := Start.Y - round(sin(Radian) * yRangePixels);
     Radian := Radian + Interval;
   end;
   Canvas.Pen.Color := cllime;
   Canvas.Polyline(FPoints);
end;
Angehängte Grafiken
Dateityp: jpg Komponente.JPG (21,7 KB, 43x aufgerufen)
Christian
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#8

AW: Probleme mit Sinus Darstellung

  Alt 26. Feb 2015, 12:40
Hi,

ich glaube es wäre sinnvoll, die Mathematik von der Darstellung zu trennen.

In den Zeilen
Code:
FPoints[i].X := Start.X + round(Radian * xRangePixels / Pi);
FPoints[i].Y := Start.Y - round(sin(Radian) * yRangePixels);
verwendest Du Darstellungskoordinaten (xRangePixels, yRangePixels) und "mathematische" Koordinaten (Radian, FPoints[i].X, FPoints[i].Y).
Meiner Ansicht nach wäre es besser, zuerst die 144 Samples der Funktion zu berechnen. D.h. "mathematisches" Argument wird auf "mathematischen" Funktionswert abgebildet. Du hättest dann ein Array of Float o.ä.
Danach nimmst Du dieses Array von Float-Werten, skalierst die Werte, bis sie groß genug sind, um in Pixeln sinnvoll dargestellt zu werden und rundest sie, so dass Integers rauskommen.
Im dritten Schritt transformierst Du diese Werte in das Koordinatensystem Deiner Darstellungskomponente.
Dann kannst Du Polyline drauf loslassen.

lg Caps
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat
Chris211183

Registriert seit: 19. Sep 2013
Ort: Braunschweig
204 Beiträge
 
Delphi 6 Professional
 
#9

AW: Probleme mit Sinus Darstellung

  Alt 26. Feb 2015, 12:54
oha

das alles zu berechnen ist ja nicht das schwierigste, aber wie zur Hölle programmiert man sowas...

In solchen Sachen bin ich noch Jungfrau...
Christian
  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 10:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz