とあるゲームプログラマの挑戦と敗北の歴史

UE4とプログラミングとmayaとpythonとマラソンを中心に情報を発信する元「技術ブログを目指すブログ」から再始動した毎日の日々を発信するブログです。

ゲーム数学:ベジエ曲線

前回のエルミート曲線とはべつにベジエ曲線の手順もメモ

www.toncrimentan.online

 

ベジエ曲線を算出するためには4点とtを用意する。

p0:頂点0

p1:頂点1

p2:頂点2

p3:頂点3

t:p0→p3を通過するときのt値(0.0~1.0)

f:id:toncrimentan_w:20200429155107j:plain

まず計算用に 1.0-tの値をt0と置く

t0 = 1.0f - t;

となりあう頂点座標をブレンドしていくことで

曲線座標を求めることができる。

 

まずは4点を3点へブレンド

vertices[0] = p0 * t0 + p1 * t;
vertices[1] = p1 * t0 + p2 * t;
vertices[2] = p2 * t0 + p3 * t;

つづいて3点を2点へブレンド

vertices[0] = vertices[0] * t0 + vertices[1] * t;
vertices[1] = vertices[1] * t0 + vertices[2] * t;

最後に2点を1点へブレンドしてベジエ曲線上の座標を算出完了

2点を1点にブレンドベジエ曲線上の座標を取得
pos = vertices[0] * t0 + vertices[1] * t;

じゃあ4点以上の場合はどなるのかというと

その場合は倍倍計算でながくすればおけ

 

おしまい。