首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi GDI+ 學習筆記 (16):DrawBezier/DrawBeziers 貝茲曲線

     編輯:Delphi

三次貝茲曲線:4 控制點定義單段、連續多段 (3n+1 點)

DrawBezier 以 4 點 (起點、控制點1、控制點2、終點) 定義單段三次貝茲曲線。DrawBeziers 連續繪製多段,點數需為 3n+1 (每段共用端點)。支援座標參數、TGPPoint、TGPPointF 陣列。

1. 單段貝茲曲線 (座標參數)


g.DrawBezier(p, 11,11, 88,333, 99,0, 222,111);

2. 使用常數點陣列


const points: array[0..3] of TGPPoint = ((11,11),(88,333),(99,0),(222,111));
g.DrawBezier(p, points[0], points[1], points[2], points[3]);

3. 連續多段貝茲曲線 (7 點 = 2 段)


pts[0] := (77,44); pts[1] := (66,111); pts[2] := (88,222);
pts[3] := (111,88); pts[4] := (132,222); pts[5] := (222,111); pts[6] := (256,11);
g.DrawBeziers(p, PGPPoint(@pts), Length(pts));

幾何特性

  • 曲線包含於 4 控制點構成的凸包內
  • 起點切線方向 = P1→P2,終點切線方向 = P3→P4
  • 連續段落若需 G1 連續 (切線連續),共用端點與相鄰控制點需共線

貝茲曲線是矢量繪圖、字體輪廓、動畫缓動函數、路徑規劃的數學基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved