openFrameworksには[a,b]を[c, d]に写像する線形写像を使ってを写像する、関数ofMap(x,a,b,c,d)
というものがあります。これの使い方で新しい発見がありました。
たとえば、[1,3]を[0,4]に変換するような写像で2を変換します。すると、[1,3]を[0,4]に移す線形写像は
となります。これで2を変換すると、f(2)=2となるので、ofMap(2,1,3,0,4)
の値は2が帰ってきます。
次に4を変換してみます。するとf(4)=6となり、[0,4]の範囲からはみ出てしまいます。プログラムを組んでいる中で、はみ出さずに、最大を超えないようにしたいことが、多々あります。そこで、今まではMAX
とかMIN
とかを使って、最大と最小の範囲に収まるように、コードを書いていました。ただ、面倒くさかった!
たまたま、ofMap
の使い方を忘れたので、リファレンスを読んでいたら、なんと!ちゃんとあるじゃないですか!最大と最小で抑える方法!単純に第6引数にtrueを書くだけです。
具体的にはofMap(4,1,3,0,4)==6
になりますが、ofMap(4,1,3,0,4,true)==4
となって、最大値で抑えられます。
oF使って長いですが、意外と見落としがあるもんですね。
コメントを残す