×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
例の奴。
FileReference.save()を使って直接BMPを保存出来るようにした。
そのついで、ドットパターンも編集出来るようにした。例によってシームレスになっているはず。
シームレスなランダムパターンを生成するにあたり、ドットの位置座標に依存する疑似乱数生成が必要になった。座標に対する再現性が無いとつなぎ目を表現出来ないのだ。
色々やって試したのだけど、拡大時にはランダムに見えても縮小するとさざ波状の模様(ある種の規則性)が見える、なんてことが多々あった。
FileReference.save()を使って直接BMPを保存出来るようにした。
そのついで、ドットパターンも編集出来るようにした。例によってシームレスになっているはず。
シームレスなランダムパターンを生成するにあたり、ドットの位置座標に依存する疑似乱数生成が必要になった。座標に対する再現性が無いとつなぎ目を表現出来ないのだ。
色々やって試したのだけど、拡大時にはランダムに見えても縮小するとさざ波状の模様(ある種の規則性)が見える、なんてことが多々あった。
ある範囲の疑似乱数を求める方法として、まず考えられるのは、互いに疎な2整数ABを用意して、Aを掛け、Bの剰余を求める方法。これで0以上B-1以下の整数が求められるんだけども、ABが桁数の大きな素数(またはその倍数)でも無い限り規則性が出やすい。
今回一番多用したのは、ビットを上下半分に割って掛け算をするような方法。長周期の規則と短周期の規則が掛け合わされてキャンセルされるイメージかな?なんかうまく行った(規則性を見いだしにくくなった)。範囲を指定する場合は剰余を求めればいい。
こんなカンジ。
var rand: uint;
rand= uint(new Date().getTime()); //適当な初期値を与える
rand &= 0xffffff; //下位24ビットだけ使用するとして
rand = ( seed & 0xfff ) * (seed >>>12 ) ; //下位12ビットと上位12ビットを掛け合わせる
rand= uint(new Date().getTime()); //適当な初期値を与える
rand &= 0xffffff; //下位24ビットだけ使用するとして
rand = ( seed & 0xfff ) * (seed >>>12 ) ; //下位12ビットと上位12ビットを掛け合わせる
rand >>= 1;
PR
この記事にコメントする
26歳のハローワールド
カレンダー
03 | 2024/04 | 05 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
最新記事
(05/23)
(05/11)
(05/09)
(05/08)
(05/08)
(03/07)
(02/25)
(02/07)
(02/07)
(01/28)
最新コメント
[11/27 gyzwviyehl]
[11/18 Tepexaxyonelo]
[09/12 gomFolley]
[08/16 CypeBachCoece]
[06/02 gb]
[03/06 kishima]
[01/18 KNDY]
[01/16 kage]
[12/23 KNDY]
[12/23 kage]
最新トラックバック
カテゴリー
アーカイブ
ブログ内検索
アクセス解析