視覚教材は、アルゴリズムがどのように機能するかを明確にするのに役立ちます。 このトークでは、UIBezierPathがどのように動作するかを、我々が見ることができるインタラクティブな方法で、アルゴリズムを再実装して調べてみます。 Swift Playgroundを使って、実装のフィードバックをすばやく入手し、学習ツールとして使用することができます。
Swift によるアルゴリズムの可視化
ベジエ曲線についてお話しましょう
一つ一つのピクセルをレンダリングするのではなく4つのポイントを作る
ベジエ曲線はCADにもアニメーションタイミングモデリングにも使われていmす
UIBezierPathがSwiftでも利用できる
どうやってこれが機能しているのか
理解するには背後のアルゴリズムが必要です。この人が考えました。
どのポイントでもいいが、ラインセグメントでつなぎ、2つのコントロールポイントを追加し、ラインセグメントをポイント感でパスする。ArbitrarilyValue0〜1を選ぶ。0はラインセグメントに沿ってポイントをプッとする。100%はカーブのエンドに行く。Tvalue50%真ん中にドットが来ることになる
実際に見てみましょう
開始点終点制御点
ヘルパー関数
デモ
ここで描画
スタイルしてい
リニア線形代数ポイント lerp
Tが1なら最初は100%、0の場合なら2つめの部分が0。加重平均の形になります。
これでタイムバリューをみていきます
(どこか修正した?「エンドポイントでしたね」)
。
黄色い点を追加
ベジエ曲線と重ねると計算がどのように行われているか分かるようになりました
最初のエレメントを除いてArraySliceに戻す
挿入されたポイントを保持しすべてのArrayのポイントにループオーバーする
ポイントが2点あれば線が引ける
単純化できる
zipの結果は短いSequenceの長さと同じになる
ArrayPointを最初のSequenceにつかい、Dropした方をSecondにする
あたらしい interpZip
ちょっとみてみましょう
コントロールポイントをいくつでも作ることができます
かなりがたがたしている。Tの値を増やしていくのを大きくしてしまった。小さくするとかなりスムーズになる。
Swift Playgroundを使うことですぐにフィードバックを得られます。
様々な実験ができます。