oF_Enumの値をランダムで取得する

oFのtipsメモです。

openFrameworksでEnumを使っていろいろする際に、値をランダムで取得したいと思いました。
具体的には、いろんな図形のパーティクル的なものを作る際に、enum(列挙型変数)で TRIANGLE,RECTANGLE, CIRCLE などを選択できるようにしたKatachiクラスを作っておいて、コンストラクタの中で形をランダムで決定するというものです。

「Enum ランダム」のように調べるとあまり日本語で文献がなかったように思ったので、メモしておきます。
参考にしたのは以下
https://stackoverflow.com/questions/2999012/generating-random-enums

結論から書くと、
katachiMode = static_cast<Mode>(round(ofRandom(3)));
という感じ。
static_castenumで設定したModeという型にキャストするということです。
ただし、いつでもこれで解決できるというわけではなさそうで、
contiguous連続的?)な場合でしか使えないとのこと。
おそらく、enumの値を
enum Mode{
Triangle = 0,Circle = 3, ~~
みたいにするとダメよってことだと思っています。深く追求してません。

もし間違っていたら教えていただければ幸いです。。

で、これを使って以下のようなクラスを作りました。(一部省略)

vector<Katachi> katachiV; をつくって
katachiV.push_back(k);

などでKatachiインスタンスを追加するたびにランダムで四角や三角のオブジェクトを追加することができます。

ミニマムなテストですが、いつか来るであろうVJイベント参加に向けてoFでいろいろできるようにちまちまと作っていきたいと思います。
(以前、interimというIAMASと多摩美のイベントでoFを使ったVJを拝見して感化されていました。)

超余談ですが、クラス名をKatachiのように日本語で作るのいいなと思ってます。
oF開発者ザック・リーバーマンさんが、School for Poetic Computation(SFPC)というのされていて、詩的なコーディングを目指すって思想がありまして、コードの中でもちょっとオサレ意識もつこと大事だなと思います。
まだまだ勉強中ですが、そういうことを今のうちから意識してもいいよなと。

コメントを残す

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