AGB  ·  Datenschutz  ·  Impressum  







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

Kurve zeichnen

Ein Thema von Larsi · begonnen am 11. Mär 2009 · letzter Beitrag vom 11. Mär 2009
Antwort Antwort
Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#1

Kurve zeichnen

  Alt 11. Mär 2009, 13:01
Hi,

meine Frage ist recht simpel: Wie kann ich in Delphi eine Kurve zeichnen? Per Canvas wäre ganz gut.

Ich stelle mir drei definierbare Punkte vor, 2 für Anfang und Ende und den dritten auf der Hälfte der Linie, der dann für die Kurve verwantwortlich ist. Ich habe schon ein bisschen gesucht und habe etwas mit einer Bezierkurve herausgefunden, doch verstanden habe ich das ganze Verfahren nicht. Ich brauch das Ganze nicht für irgendwelche mathematischen Berechnungen, sondern möchte einfach nur eine Kurve zeichnen, bei der ich bestimmten kann wie gebogen sie ist..


Mit freundlichen Grüßen

Lars Wiltfang
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Kurve zeichnen

  Alt 11. Mär 2009, 13:04
Was ist denn eine Kurve? Ein Stück Kreis bzw. ein Stück Ellipse. Also brauchst du Kreisfunktionen zur Berechnung der Punkte. Stichworte: Sinus, Cosinus, ...
  Mit Zitat antworten Zitat
Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Kurve zeichnen

  Alt 11. Mär 2009, 13:11
Gibt es da keine Funktion in Delphi für um eine Kurve zu zeichnen? Wenn ich die drei Punkte errechnet habe und sie verbinde sind es ja eigentlich nur 3 Striche und keine Kurve.
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Kurve zeichnen

  Alt 11. Mär 2009, 13:23
Hi,

einfach mal die Suchfunktion bemühen. Du schwärmst ja immer so von ihr: Spline Linien zeichnen. Da findest du einiges und kannst das vermutlich auch deinen Bedürfnissen anpassen. Sonst eben nochmals fragen, wenn die Ergebnisse nicht deinen Vorstellungen entsprechen.

Mal als manueller Ansatz: Berechne einzelne Punkte der Kurve (die trigonometrischen Funktionen wurden genannt) und verbinde diese über Canvas.MoveTo / Canvas.LineTo. Je mehr Punkte zu berechnest, desto enger liegen sie zusammen und desto sauberer wird die Kurve. Wobei Antialiasing nicht eingesetzt wird. Das wäre vermutlich dann aufwändiger.

Grüße, Matze
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.138 Beiträge
 
Delphi 12 Athens
 
#5

Re: Kurve zeichnen

  Alt 11. Mär 2009, 13:36
falls dir der Mittelpunkt, Radius und Anfangs/Endwinkel reichen,
bzw. wenn du dir dieses aus deinen 3 Punkten errechnen kannst,
dann da http://www.delphipraxis.net/internal...005366#1005366
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#6

Re: Kurve zeichnen

  Alt 11. Mär 2009, 13:41
Schau dir das folgende Bild an und überlege dir, wie du das lösen kannst
(sehr simpel
http://upload.wikimedia.org/wikipedi...ratic_anim.gif


Falls du das mit funktionen machen willst, wäre dies ein guter Vorschlage:
Delphi-Quellcode:
type
  TFX = function( X: Double ): Double;
..
function MyFunc( X: Double ): Double;
begin
  Result := X*X;
end;

procedure Dot( Pos: TPoint; ACanvas: TCanvas );
begin
  with ACanvas do
  begin
    MoveTo( Pos.X, Pos.Y );
    LineTo( Pos.X + 1, Pos.Y );
    LineTo( Pos.X + 1, Pos.Y + 1 );
    LineTo( Pos.X, Pos.Y + 1 );
    LineTo( Pos.X, Pos.Y );
  end;
end;

procedure DrawFX( Center: TPoint; _Min, _Max, _Accuracy: Integer; ACanvas: TCanvas;
  fx: TFX );
var
  i: Integer;
begin
    for i := _Min*_Accuracy to _Max*_Accuracy do
      Dot( Point( Center.X+i div _Accuracy, Center.X + Round( fx(i / _Accuracy) ) ), ACanvas );
end;

// Zeichnen:
   DrawFX( Point( 100, 100 ), -10, 10, 10, Canvas, MyFunc );
MfG
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.138 Beiträge
 
Delphi 12 Athens
 
#7

Re: Kurve zeichnen

  Alt 11. Mär 2009, 13:46
Was hast du denn an .PolyBezier nicht verstanden?

PS: OK, da werden 2 Steuerpunkte verwendet, aber so für den Anfang könntest du für beide Punkte dieselben Werte verwenden.

Delphi-Quellcode:
var x: array[0..3] of TPoint;

x[0] = Punkt 1
x[1] = Steuerpunkt
x[2] = Steuerpunkt
x[3] = Punkt 2
Canvas.PolyBezier(x);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Felix015

Registriert seit: 2. Okt 2008
16 Beiträge
 
#8

Re: Kurve zeichnen

  Alt 11. Mär 2009, 14:59
ansonsten lern opengl da is sone function gleich mit drin
  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 14:36 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