💭
C# 8 で ベジェ線の計算
Qiitaより転載
2019/12/11 初投稿
2つ以上の点からベジェ線を計算するコード。
public static class Bezier
{
public static Vector3 Get(float t, params Vector3[] points)
=> Get(t, points.AsSpan());
public static Vector3 Get(float t, ReadOnlySpan<Vector3> points)
=> (points.Length, t) switch
{
_ when t < 0 || t > 1 => throw new Exception(""),
var (i, _) when i < 2 => throw new Exception("Points must be >= 2"),
var (i, _) when i == 2 => points[0] + t * (points[1] - points[0]),
var (i, _) => Get(t, points.Slice(0, i - 1))
+ t * (Get(t, points.Slice(1, i - 1)) - Get(t, points.Slice(0, i - 1))),
};
}
だいぶ関数型っぽいコードになってきた気がする。
Discussion