跳到內容

顏色內插

各種色彩空間中顏色的內插器。

interpolateRgb(a, b)

js
d3.interpolateRgb("purple", "orange")

範例 · 原始碼 · 傳回兩個顏色 ab 之間的 RGB 色彩空間內插器,並可設定 gamma。如果未指定 gamma,預設值為 1.0。顏色 ab 不必為 RGB;它們將使用 d3.rgb 轉換為 RGB。內插器的傳回值為 RGB 字串。

interpolateRgbBasis(colors)

js
d3.interpolateRgbBasis(["purple", "green", "orange"])

範例 · 原始碼 · 傳回指定的 colors 陣列中均勻非有理 B 樣條內插器,這些陣列會轉換為 RGB 色彩空間。會產生隱含控制點,使得內插器在 t = 0 時傳回 colors[0],在 t = 1 時傳回 colors[colors.length - 1]。目前不支援不透明度內插。另請參閱 d3.interpolateBasis,並參閱 d3-scale-chromatic 以取得範例。

interpolateRgbBasisClosed(colors)

js
d3.interpolateRgbBasisClosed(["purple", "green", "orange"])

範例 · 原始碼 · 傳回一個均勻非有理 B 樣條插值器,通過指定的顏色陣列,這些顏色會轉換為RGB 色彩空間。控制點會隱含重複,因此產生的樣條曲線在 [0,1] 中重複t 時具有週期性的 C² 連續性;這很有用,例如建立週期性的色彩比例。目前不支援不透明度插值。另請參閱 d3.interpolateBasisClosed,並參閱 d3-scale-chromatic 以取得範例。

interpolateHsl(a, b)

js
d3.interpolateHsl("purple", "orange")

範例 · 原始碼 · 傳回兩個顏色 ab 之間的 HSL 色彩空間插值器。顏色 ab 不必在 HSL 中;它們將使用 d3.hsl 轉換為 HSL。如果任一顏色的色相或飽和度為 NaN,則使用對應顏色的通道值。使用色相之間最短的路徑。插值器的傳回值是 RGB 字串。

interpolateHslLong(a, b)

js
d3.interpolateHslLong("purple", "orange")

範例 · 原始碼 · 如同 interpolateHsl,但不會使用色相之間最短的路徑。

interpolateLab(a, b)

js
d3.interpolateLab("purple", "orange")

範例 · 原始碼 · 傳回兩個顏色 ab 之間的 CIELAB 色彩空間 插值器。顏色 ab 不必是 CIELAB;它們將使用 d3.lab 轉換為 CIELAB。插值器的傳回值是 RGB 字串。

interpolateHcl(a, b)

js
d3.interpolateHcl("purple", "orange")

範例 · 原始碼 · 傳回兩個顏色 ab 之間的 CIELChab 色彩空間 插值器。顏色 ab 不必是 CIELChab;它們將使用 d3.hcl 轉換為 CIELChab。如果任一顏色的色相或彩度為 NaN,則使用對應顏色的通道值。會使用色相之間最短的路徑。插值器的傳回值是 RGB 字串。

interpolateHclLong(a, b)

js
d3.interpolateHclLong("purple", "orange")

範例 · 原始碼 · 與 interpolateHcl 相同,但不會使用色相之間最短的路徑。

interpolateCubehelix(a, b)

js
d3.interpolateCubehelix("purple", "orange")
js
d3.interpolateCubehelix.gamma(3)("purple", "orange")

範例 · 原始碼 · 使用可設定的 gamma,傳回兩個顏色 ab 之間的 Cubehelix 色彩空間插值器。如果未指定 gamma,則預設為 1.0。顏色 ab 不必是 Cubehelix;它們將使用 d3.cubehelix 轉換為 Cubehelix。如果任一顏色的色相或飽和度為 NaN,則使用對應顏色的通道值。會使用色相之間最短的路徑。插值器的傳回值是 RGB 字串。

interpolateCubehelixLong(a, b)

js
d3.interpolateCubehelixLong("purple", "orange")
js
d3.interpolateCubehelixLong.gamma(3)("purple", "orange")

範例 · 原始碼 · 與 interpolateCubehelix 相同,但不會使用色相之間最短的路徑。

interpolateColor.gamma(gamma)

js
d3.interpolateRgb.gamma(2.2)("purple", "orange")

假設 interpolateinterpolateRgbinterpolateCubehelixinterpolateCubehelixLong 中的一個,會使用指定的 gamma 回傳同類型的新的內插器工廠。請參閱 Eric Brasseur 的文章,圖片縮放中的 Gamma 錯誤,以進一步了解 Gamma 校正。

interpolateHue(a, b)

js
d3.interpolateHue(20, 340)(0.5) // 0

範例 · 來源 · 回傳兩個色相角 ab 之間的內插器。如果任一色相為 NaN,會使用相反的值。會使用色相之間最短的路徑。內插器的回傳值是 [0, 360) 中的一個數字。

標準內插器會在 t = 0 時從起始值 a 混合到 t = 1 時的結束值 b,而樣條內插器會使用分段多項式函數,針對 [0,1] 中的 t 平滑混合多個輸入值。目前僅支援三次均勻非有理 B 樣條,也稱為基底樣條。