GDI 中的基數樣條,基數樣條曲線的Demo

2022-02-05 10:10:09 字數 1059 閱讀 8581

[msdn]gdi+ 中的基數樣條

基數樣條是一連串單獨的曲線,這些曲線連線起來形成一條較大的曲線。樣條由點的陣列和張力引數指定。基數樣條平滑地經過陣列中的每個點;曲線的陡度上沒有尖角和突然的變化。下面的插圖顯示了一組點和經過這一組點中每一點的基數樣條。

物理樣條是一塊薄木片或其他有彈性的物質。在數學樣條出現之前,設計者利用物理樣條繪製曲線。設計者把樣條放置在一張紙上並錨定到一組給定的點上。然後,設計者就可以用鋼筆沿樣條繪製出一條曲線。一組給定的點可以產生各種各樣的曲線,這取決於物理樣條的屬性。例如,極不易彎曲的樣條與非常有彈性的樣條產生的曲線是不同的。

數學樣條的公式基於彈性棒條的屬性,因此數學樣條產生的曲線與物理樣條曾產生的曲線是相同的。正如不同張力的物理樣條通過一組給定的點將產生不同的曲線一樣,張力引數值不同的數學樣條在一組給定的點上將產生不同的曲線。下面的插圖顯示了經過同一組點的四個基數樣條。每個樣條都顯示了張力。0 張力相當於無窮的物理張力,以強制曲線在點與點之間採取最短的路徑(直線)。張力為 1 對應於沒有物理張力,使樣條採用最小完全彎曲的路徑。張力值大於 1 的曲線就像壓縮的彈簧,被擠壓著採用較長的路徑。

若要繪製基數樣條,需要 graphics 類的例項、pen 和 point 物件陣列。graphics類的例項提供了 drawcurve 方法以用於繪製樣條,而pen儲存樣條的屬性(如線寬和顏色)。point物件陣列儲存曲線將要經過的點。下面的**示例演示如何繪製經過 mypointarray 中的點的基數樣條。第三個引數是張力。

[演示demo]

最近有個專案,根據路況感測器實時採集的資料,顯示交通線路的擁堵情況;需要用到直線,文字,曲線;為了深入了解曲線做了這個demo來了解曲線;

希望高手給解釋下張力沒有找到相關的解釋

曲線原始碼

technorati 標籤: 基數樣條,曲線,張力

B 樣條曲線的導數

回目錄 定義如下 如果原始的clamped節點向量是u 0 p 1 u p 1,u m p 1,u m p 1 那麼移動第乙個和最後乙個節點使得第乙個和最後乙個節點重複度變成,p 而不是p 1,我們有乙個m 1 個節點u 0 p u p 1,u m p 1,u m p 的新節點序列。那麼,可證明在原...

B樣條曲線的導數

0 目的 b樣條曲線最早是為汽車 船舶等工業產品做外觀造型設計而發明的,但是由於它有一些非常好的性質 光滑 能靈活地改變曲線形狀 表達精確 所以被用到越來越多的問題上,比如求微分方程的數值解。我們都知道,積分比微分難,對於一些複雜的問題,只會用普通的數值積分 比如尤拉積分 龍格庫塔積分法 是不夠的。...

CSGL OPENGL C 下的拋物樣條曲線

各種曲線啊,貝塞爾曲線,b樣條曲線,拋物曲線,正弦曲線。弄的我頭暈眼花,其實我要的很簡單,就是三個點確定條曲線 拋物曲線 環境 vs2008 語言 c spline.cs是封裝的實體類 csglcontrol.cs繼承openglcontrol 在csglcontrol下呼叫spline實體的dra...