Einzelnen Beitrag anzeigen

Phantom1

Registriert seit: 20. Jun 2003
282 Beiträge
 
Delphi 10.4 Sydney
 
#1

Kennt sich jemand mit SPLines aus?

  Alt 24. Aug 2004, 18:26
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
  Mit Zitat antworten Zitat