Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Kennt sich jemand mit SPLines aus? (https://www.delphipraxis.net/28431-kennt-sich-jemand-mit-splines-aus.html)

Phantom1 24. Aug 2004 18:26


Kennt sich jemand mit SPLines aus?
 
Hi,

und zwar suche ich die richtigen Formeln für verschiedene SPLines arten und zwar genau die die auch in AutoCAD verwendet werden. Das wären die 4 folgenden: Periodic spline, Rational spline, Planar spline, Linear spline.

Irgendwie war meine Suche nach den Formeln bisher erfolglos. Ich habe nur den folgenden DelphiCode gefunden:

Delphi-Quellcode:
procedure DrawCubicCurve(Canvas: TCanvas; const Points: array of TPoint; Steps: cardinal);

  function Interpolate(const p1, p2, p3, p4: TPoint; t: single): TPoint;
   
    function cubic(v1, v2, v3, v4, t: single): single;
    begin
      result:=v2+t*((-v1+v3)+t*((2*v1-2*v2+v3-v4)+t*(-v1+v2 - v3 + v4)));
    end;

  begin
    Result.x:=round(cubic(p1.x, p2.x, p3.x, p4.x, t));
    Result.y:=round(cubic(p1.y, p2.y, p3.y, p4.y, t));
  end;

var
  i, s: integer;
  p, p1, p2, p3, p4: TPoint;
begin
  if Length(Points) < 2 then exit;
  Canvas.MoveTo(Points[0].x, Points[0].y);
  p2:= Points[0];
  p3:= Points[0];
  p4:= Points[1];
  for i:= 0 to High(Points)-1 do
  begin
    p1:= p2;
    p2:= p3;
    p3:= p4;
    if i+2 < Length(Points) then p4:= Points[i+2];
    for s:= 1 to Steps do begin
      p:= Interpolate(p1, p2, p3, p4, s / Steps);
      Canvas.LineTo(p.x, p.y);
    end;
  end;
end;
Der Code funktioniert zwar, aber ich kann diese Spline art keine von den oben genannten 4 arten zuordnen.

Wäre für jede hilfe dankbar.

mfg

CenBells 24. Aug 2004 20:42

Re: Kennt sich jemand mit SPLines aus?
 
Hi,

Splines sind mathemathische Formeln zur Interpolation von Polynom-Funktionen. Such einfach mal im Internet nach Spline (oder auch Splinefunktion) und Definition und Interpolation, dann wirst du schon ein paar sachen finden. Und das nachprogrammieren ist dann sicherlich keine große Sache.


Gruß
Ken

dizzy 24. Aug 2004 21:26

Re: Kennt sich jemand mit SPLines aus?
 
Hier sind auch noch 4 beschrieben incl. C-Code. Cubic ist auch dabei, und linear (der wohl einfachste Typ ;)).

Das Problem der Zuordnung der Verfahren zu den richtigen Bezeichnung ist garnicht so eeinfach, da sehr viele Algos vorhanden sind, und teilweise auch ein und der selbe Algo, oder mit minimal unterschiedliche Algos unter völlig anderen Namen "firmieren".

Bekannt sind da noch B-Splines, Heremite-Splines, Beziér-Kurven etc.pp. und alle machen's etwas anders. Die von die genannten kenne ich z.B. (bis auf linear) nicht, was aber nicht heisst, das es nicht vielleicht doch einer der obigen ist, nur halt unter anderem Namen :?

Da wäre eine intensive Google-Suche wahrscheinlich am ertragsreichsten...

gruss,
dizzy


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:55 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