math.bezier
code:Lua
y = textmodule.math.bezier(t, p0, p1, ...)
モジュール
引数
table:_
変数 型 概要
1 t number 経過時間(0 - 1)
...
返り値
table:_
変数 型 概要
1 y number 処理された数値
概要
任意の次数のベジエ曲線を生成し、時間tで補間する。 制御点には、数値型だけでなく、ベクトル型も使用することができる。
制御点を$ \textrm{P}_0, \textrm{P}_1, ... \textrm{P}_{N-1}とすると、以下のN次ベジエ曲線を計算する。
$ y = \sum_{i=0}^{N-1} \textrm{P}_i B_{N-1,i}(t)
$ B_{n,i}(t) = {}_n \mathrm{C}_i t^i (1-t)^{n-i}
例
code:Lua
require("textmodule")
p0 = textmodule.vector2.new(-300, 300)
p1 = textmodule.vector2.new(300, 300)
p2 = textmodule.vector2.new(300, -300)
obj.load("figure", "円", 0xffffff, 10)
for i=0, 100 do
t = i/100
p = textmodule.math.bezier(t, p0, p1, p2) --2次ベジエ曲線を生成
obj.draw(p:x(), p:y()) --描画
end
生成された画像
https://scrapbox.io/files/6269103ddc3b6a001d90728f.png