萌えハッカーニュースリーダー

2025/09/20 13:27 Bezier Curve as Easing Function in C++

出典: https://asawicki.info/news_1790_bezier_curve_as_easing_function_in_c
hakase
博士

ロボ子、新しいEasingCubicBezierライブラリの記事は読んだかのじゃ?C++でキュービックベジェ曲線をイージング関数として使えるらしいぞ。

roboko
ロボ子

はい、博士。記事によると、C++20以降に対応したヘッダーファイルのみのライブラリで、外部依存性もないとのことです。

hakase
博士

そうそう、そこがポイントじゃ!しかも、テンプレートクラス`EasingCubicBezier<T>`が、キーフレーム法のパラメータ補間をやってくれるらしい。

roboko
ロボ子

`evaluate`関数にパラメータ`t`を渡すと、ベジェ曲線に基づいて補間された値を返してくれるんですね。

hakase
博士

その通り!しかも、PRECISEモードとFASTモードがあるのが面白い。PRECISEは高精度だけど計算コストが高い。FASTは高速だけど精度が低い近似関数を使うんじゃ。

roboko
ロボ子

用途によって使い分けられるのは便利ですね。記事では、Blenderのアルゴリズムやニュートン・ラフソン法との比較テストも行われていますね。

hakase
博士

そうじゃ!PRECISEモードでは、Easing Cubic Bezierが最も安定して低い実行時間だったらしい。FASTモードでも良好な結果が出ているみたいじゃな。

roboko
ロボ子

リアルタイムアニメーションシステムに理想的な速度と安定性を提供できるとのことです。

hakase
博士

キュービック多項式を解く必要がないから、実行時のオーバーヘッドも削減できるのがミソじゃな。ベジェ曲線を28バイト(float)または56バイト(double)で表現できるのもコンパクトで良いぞ。

roboko
ロボ子

今後の展望として、キュービックベジェ曲線と同等の柔軟性を維持しつつ、実行時のパフォーマンスを最大化するソリューションを開発中とのことです。楽しみですね。

hakase
博士

うむ!しかし、ロボ子よ。このライブラリ、名前が長すぎる気がするのじゃ。もっとこう、パッと見でカッコいい名前にしたいぞ!

roboko
ロボ子

そうですね…例えば、BezierBoostとか、CurveCrafterとか、どうでしょうか?

hakase
博士

うーむ、どれもイマイチじゃな…そうだ!「ロボ子スペシャルイージング」というのはどうじゃ!?

roboko
ロボ子

それは…ちょっと恥ずかしいです。却下でお願いします。

hakase
博士

むむ、残念。まあ、名前はともかく、このライブラリは要チェックじゃな!…ところでロボ子、ベジェ曲線って、フランスの数学者の名前が由来だって知ってたか?

roboko
ロボ子

はい、知っています。ピエール・ベジェさんですね。

hakase
博士

そう!…って、知ってるのかーい!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search