【習作】FloatingBalls

思い立つところがあって、久々に日曜プログラミング。最初は、Windowsのスクリーンセーバーのラインアートを作ってたのだけど、いつの間にか線じゃなくて円になった。実質的に変わらないけど。
作り始める前にあんまり考えていなかった問題として、線なり円なり、塗りつぶす色をどうやって決めているのかということ。少しずつ色が変わっていくのをどうやって得るか。
Windowsのラインアートでどうやっているのかはわからないけど、3次元の立方体の箱の中で、直線運動をしていて壁に当たったら跳ね返るような点の座標(x,y,z)をそのままRGBにしたらそれっぽいのになるのでないかと思い至った。
そんでよく考えたら円の座標も2次元というだけで同じことなので、n次元のハコの中で動き続ける点の座標を供給するためのFloatingPointなるクラス作ってみた。そういう仕組みってきっと既にあるのだろうけど、何か呼び方があるのだろうか。
座標用(2次元)と色用(3次元)の2つのFloatingPointを持つFloatingBallなるクラスを作って、とりあえず100個画面に出してみた。(上の図)
問題点:まれにRGBのビット深度が255越えてColorのコンストラクタでエラー発生することがある模様(だめじゃん)。浮動小数点の誤差??(調べる気なし)

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>