画像出力
Last-modified: 2019-01-27 (日) 03:29:24 (1518d)
シミュレーションの途中経過のタートルやパッチのスナップショットを PNG画像としてファイルに書き出すことができます(上はそれをまとめた 動画GIF画像)。 ファイル書き出しの手続き †StarLogoでのファイル書き出し(Export)のための手続きはいくつかありますが、 ここではファイル名を引数指定して書き出す export-picture-turtles-and-patches-name :filename という手続きを使って、シミュレーション経過のタートルとパッチのスナップショット画像を作成し、保存するプログラムを作ってみます。 ※確認バージョンは2.2です。 確認プログラム †ここでは、次の様な手続きをStarLogoで書きます
ここではタートルへの命令が基本命令1つだけなので、全ての 手続きをObserverProcedureとして書きます。 外部変数の利用 †今回作成のキーフレームアニメーションのために、シミュレーションのステップを 次の様なグローバル変数に入れることとします。 globals [ s-frameno ] 手続き †次の様な手続きをControl CenterのObserver Proceduresのエリアに書きます。 初期設定 †init手続きは、グローバル変数の初期化と、パッチ・タートルの初期化、そして、 タートルを1000匹生成します。 to init set s-frameno 20 ca crt 1000 end シミュレーション実行 †go手続きは、シミュレーションとはいえない単純な命令 fd 1をタートル に対して命令します。そしてこの処理を10回繰り返します。 繰り返しの最後にスナップショット画像を保存するための snap-shot手続き を読んでいます。 to go dotimes [:i 10][ ask-turtles [ fd 1 ] snap-shot ] end フレームの画像書き出し †これが、このTipsのメインの手続きです。 to snap-shot [ set s-frameno (s-frameno + 1) ;; フレームのカウントアップ ;; 数字を5桁にあわせ、ファイル名の長さを一定にするための処理 let [:str to-string [s-frameno] ] dotimes [:i (5 - (length :str))] [ set :str (to-string ["0" :str]) ] let [:filename to-string ["outpic" :str] ] ;; :filenameで画像を書き出す export-picture-turtles-and-patches-name :filename ] end GUI(ボタン) †initのためとgoのためにそれぞれ一つずつボタンを作成します。どちら もObserver用であることに注意してください。 実行 †初期設定ボタンを押した後に、実行ボタンを押してください。 実行結果 †特に特別な動きを行うようにはなっていません。goボタンを押してgo手続きを 起動すると、それぞれのタートルが10歩前に移動するアニメーションをみること ができ、同時に、適当なディレクトリ(作業ディレクトリとしてStarlogoが現在 持っている場所)へ、ファイルが保存されます。 GIFアニメーション †ここでは簡易的に、PNG形式ででている画像を動画GIFとして1つのファイルに まとめます。この作業にはいろいろな方法があると思いますが、今回は、 cygwin上で、convertコマンドを利用して行いました。 $ convert *.png outanim.gif これだけです。このページのトップにそのアニメーションGIF画像を 貼り付けています。
Counter: 375,
today: 2,
yesterday: 1
|