【GLSL】四角形を描く


ちょっといつもと違う感じにお絵描きがしたくなったので、基本になる四角形を色々書いてみます。正方形、長方形、角丸、適当な4点などの基本形。

正方形

今回は処理する点 p を -1 < x,y < 1 の範囲にします。

点 p と中心 c の距離のうち大きい方が、.5 より小さいかどうか見ています。

長方形

距離ベクトルとサイズベクトルの比較をする。

少し整理するとこうなります。

角丸四角形

角を丸めた四角形は距離関数を使うと簡単に作れます。

点から一定距離の図形が円で、四角から一定距離の図形が角丸四角形です。

 

距離関数からエッジ分を引いて処理するだけ。

そのままだと四角形はエッジ分膨らむので最初に補正しています。

回転

基本的な回転行列を適応すれば回転します。

p にかければ中央を軸に、(p-c) にかけると c を軸に回転します。

任意の四点

GLSLの練習【Crop, Tiling】でやった三角形のように、外積で内外判定します。

渡す点の順番は時計回りか、反時計回りに。

 

点の順番を気にしたくないなら3角形を組み合わせる方法もあります。

おまけ / メイン

ちょっと弄って適当な図形を書いてみます。

コードをずっと書いてたこのツールのアイコン。

折り目と角を気にしなければ結構いい感じにできました。


コメントを残す

メールアドレスが公開されることはありません。