[PR]
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
プログラミング、3DCGとその他いろいろについて
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
プログラミングと手で紙に書く数式は、ほとんど同じものを表しているのに書き方が違う場合があります。たとえば、=∫と+=です。
数学クイズです:「表面が常に中心方向と直角になっている図形はどんな形でしょうか?」答えは円です。この調子で、表面の方向から図形の形を当てるゲームをしてみたくなったので、図形の形を計算するかんたんなプログラムを書いてみました。当初の目的であるゲームをする気力がなくなってしまったのが唯一残念なことです。
マウスで絵を描くとそのラプラシアン画像をリアルタイムで表示するプログラムを書きました。
これは人の目が物体の輪郭を検出するのに行っている計算です。
キャンバスが2つあります。
上のキャンバスにマウスで絵を描きましょう。
下のキャンバスにその絵のラプラシアンが表示されます。
ラプラシアンは輪郭を表します。
同じ色ならつまらない灰色ですが、色の境界線は白と黒で目立ちます。
ペンの色や太さを変えていろいろな絵を描いてみましょう。
ときどき、黒で描いた線と白色で描いた線のラプラシアンが違う色に見えるかもしれません。
でも実際には同じ色です。
違うのは境界あたりだけで、その中身は全部同じ灰色です。
境界のあたりの色の強弱のせいで、違う色に見えるのです。
このデモではある点のラプラシアンを次のように計算しています。
-1/8 | -1/8 | -1/8 |
-1/8 | +1 | -1/8 |
-1/8 | -1/8 | -1/8 |
画像の各ピクセルについて、3x3の領域の計算を行って、新たなラプラシアン画像を作り出しています。
中心点の周りが全部同じ色だと0になりますが、周りが違う色だと0でなかったりします。
でも数学で使われるラプラシアンだとこっちのほうがわかりやすいかもしれません。
0 | +1/4 | 0 |
+1/4 | -1 | +1/4 |
0 | +1/4 | 0 |
数学のcurl(別名:rot)の直感的理解をめざしてデモプログラムを作りました。
TypeScript + (createjs + three.js)です。
このプログラムはTypeScriptという言語で書かれています。
2次元部分にcreatejsを使用し、3次元部分にはthree.jsを使用しています。