2010年1月4日月曜日

Processing | 直線の角度

正月も時間の限りProcessingやって、やっとノードグラフがだいたいできたんですが、
リンク・ラインがどっちへ向かっているのかって、やっぱり重要なユーザビリティですね。
とりあえず自分でわかればいいんだけど、矢印ついてないと親子関係がどっち向きなのかがわかりませんので動作の検証も面倒です。
それにしてもGUIを実現するためには、グラフィックとはまったく関係の無い文字列データなどをちまちま処理して判定したりしなければならない作業のほうが山ほどあって、ほとほと疲れます。
それと、細かい処理をするためには、それなりにJavaの構文を調べないとできないってことがわかってきて、書いてることはほとんどのコードがJavaになってきました。

それはておき、矢印を作りたい場合、直線の先に三角をつける、という具合に考えればいいですね。
そこで重要なのが、三角を直線の先に配置する、というのと、三角を直線の向きに回転する、という2点。
では直線の傾き角度を求めたくなりました。

Web上では、直線の角度を求める 、としてその方法が紹介されていて、しかもJavaなので少し調整すればいいですね。コサインの逆関数のアークコサインを使用するのがポイントと書いてありますが、Professingの場合はrotate()はラジアンで渡せばいいのでコサインの値でOKですね!

余談ですが、 ノードグラフを描く場合、矩形の辺にぴったり矢印の先がくっつくようにする([node]-->[node])処理はちょっと面倒くさいですね。
そこで思い出したのがMayaのノードグラフなんですが、あれって線の真ん中に矢印([node]->-[node])ありますが、あれって頭いいですね。だって線分の真ん中に「へ」の字を配置して、線分の向きに沿わせればいいんですから、簡単だけど必要十分な機能は実現できますよね。

制作・©:のぼる/N.Lab