私はスムーズにPostScriptでアニメーションを実行したいと思います。私が望むものを見るために、PostScriptに直接切り替えてみましょう。 Ghostscriptを呼び出し、スムーズなPostScriptアニメーション
200 dup scale .5 setgray 0 0 3 3 rectfill
現在灰色の正方形を持っています。
0 setgray 0 1 3 1 rectfill
黒いストライプが入っています。私たちは今、連続しているストライプ、 白と黒の1時間を記入します:
{1 setgray 0 1 3 1 rectfill 0 setgray 0 1 3 1 rectfill} loop
あなたは今 は、元のブラックストライプよりも小さく、黒と白の長方形のいくつかのちらつきが表示されます。理想的には、元の灰色の四角形 が表示されます。またはほとんど。今日、どこでそのような機能を利用できますか?
サイズ5の魔法 正方形の検索より面白いアニメーションシーケンスを参照するには、次の私は、これらの問題に対処しようとしなかった数年前
wget http://www.complang.tuwien.ac.at/ulrich/gupu/l5.eps.gz
zcat l5.eps.gz | ghostscript -
を。しかし、ゴーストスクリプトやXfreeには一度も入りませんでした。 this pageを参照してください。たぶんいくつか良いアイデアがありますか?
編集:これまでの回答を読んだ後、ここで1つの問題を明らかにする。基本的に、二つの独立した問題は、この質問であります
アニメーションが言語レベルで表示する必要がありますどのように?私は、最善の方法は、各フレームを1つのページとして見ることです。
copypage
では、少ない労力で増分変更を実現できます。悲しいことに、copypage
のセマンティクスはレベル1と2にのみ存在します。レベル3では、copypage
の意味がshowpage
に変更されました。私は何年も前にlittle modification to ghostscriptと表示されているすべての変更をcopypage
またはshowpage
まで延期しました。このようにして、変更された領域を含む単一のXCopyArea
が、サーバー上の(つまり、ディスプレイ)にローカルで実行されます。グラフィックスに記載されていない場合のアーチファクトを回避するために、ビジュアルディスプレイの実際の変更を同期させるにはどうすればよいですか?あなたが見る不規則なちらつきは、PostScriptの特権ではありませんが、これまで私が見てきたダブルバッファーシステムには存在するようです。あなたが合っていると思うどんなシステムでもこれをプログラムしようとしてください。
さらに編集:
右の言語レベルを取得するには、それは(ghostscriptのための)レベル1または2行います:
systemdict /.setlanguagelevel known {2 .setlanguagelevel} if
編集:私はこのコメントを追加していいくつかの新しいpostscript投稿者を引き付けるかもしれません。
一連の白と黒のスウォッチから灰色の「効果」を得たい場合は、ディスプレイのリフレッシュレートに同期させる必要があります。 60hzでは、最大で2つの "フレーム"が必要ですが、30hzはPersistence Of Visionしきい値よりも上です。 –
これは、どのような目に見えるべきかどうかが明白なテスト例に過ぎませんでした。そのような灰色のペイントをしたいと思っている人はいません(25年前にATARIでそうしたことは人気がありました...)。ここで興味深いのは、アニメーションの一部ではないアーチファクトを見ることなく、離散アニメーションを上のもの(l5.eps)として見ることです。それを見てください:それはCLPFDプログラムがあらゆる可能性を系統的に列挙することによって魔方陣への解決策をどのように見つけ出すかを示しています**。 – false
*バッチ*モードの[追記とアニメーション](https://groups.google.com/forum/#!topic/comp.lang.postscript/olXsoUut2aQ)に関する最近のスレッド。 –