CSS で角度を扱う機会が増えてきたので、三角関数を中心にいくつかの数学関数を Sass 関数として実装してみてる。「三角関数を中心に」とかさらっと書いてるけど、書いてる本人はタンジェントとか高校で習ってないと言い張る程度の理解なので注意。書いてるうちに芋づる式に増えて手に負えなくなってきたところで GitHub に公開することにした。
ほんとは Ruby のモジュールで書けば簡単かつ精度も高いだろうし、将来 Sass のネイティブに実装されれば用なしになるわけだけど、勉強になるのでやってて満足度は高い。
これ系の Sass 実装でまとまったものは adambom/Sass-Math と Team-Sass/Sassy-math ぐらいしか見つけられなかったし、これらの中でもものによってバグってるっぽいのもあったので、ほかに 404 Blog Not Found:javascript - Mathを再発明してみた や『C言語による最新アルゴリズム事典』などを参考にした。
今のところの具体的な利用シーンとしては「幅と高さから角度を求める」とか「幅と角度から高さを求める」といったところなので、とりあえずこれで足りてるものの、せっかくなので log()
とかもあると格好がつくのかなというのはある。いつ使うのかはさっぱりわからないけど。
あとはテストをちゃんと書きたいんだけど、それぞれの関数で典型的な数値というか、この場合にこの値が得られれば実装として合格、みたいなのがわからないので書けずにいる。答え合わせはブラウザーの JavaScript コンソールで Math.sqrt(2)
とかやっておー合ってる合ってるみたいな進め方なのでかなり不安。
そんなわけで math 好きな皆さんのご参加をお待ちしております。
次は行列に挑戦だ!