🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

解決済

2回答

2818閲覧

processingで輝度の波を作りたい

mothi5656

総合スコア27

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2020/12/17 14:50

編集2020/12/17 15:12

processingで動く縞模様を作りたいのですが、実行結果が一枚の画像を横にスライドしているような感じになります。(コードを実行してもらったらわかるかと思います。)最終的に真っ黒にならずに縞模様が動く動画のようにするにはどこを変更したら良いのでしょうか。

processing コード void setup() { size(200, 200);// background( 0 ); textSize(16); textAlign(CENTER, CENTER); } void draw() { move(); count = count + 1; } void move() {// 動く縞 float val; // 階調値(0~255) float NumOfCycle = 2; // 波の数 int i, x; background( 0 ); noStroke(); for (i=0; i<200; i++) { val=255*(1+sin(NumOfCycle*i*2*PI/200))/2; x=count%width; fill(val); rect(i+x, 0, 1, height); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

描く図形の方の位相をずらすのが定石かと思います。

void move() {// 動く縞 float val; // 階調値(0~255) float NumOfCycle = 2; // 波の数 background( 0 ); for (int i=0; i<200; i++) { val=255*(1+sin(NumOfCycle*((i-count)%200)*2*PI/200))/2; stroke(val); line(i, 0, i, height); //別にrectで描いてもいいですけど。 } }

あるいは、図形の方は一定に描いて、「窓」をずらしていくというのもtranslate()標準装備のProcessingらしいと言えるかも。

void move() {// 動く縞 float val; // 階調値(0~255) float NumOfCycle = 2; // 波の数 background( 0 ); translate(count%200-200,0);//「窓」の位置をずらす for (int i=0; i<400; i++) {//2倍幅描いておく val=255*(1+sin(NumOfCycle*i*2*PI/200))/2; stroke(val); line(i, 0, i, height); //別にrectで描いてもいいですけど。 } }

投稿2020/12/18 00:13

thkana

総合スコア7703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

要は書き始めの位置(0 + x)がどんどん右へ行ってしまうので、background(0);のままの部分が残ってしまうわけですよね?

であれば最初からwidth分左にずらしておいて、2倍widthを書いてしまえばいいんじゃないでしょうか(無駄ですが^^;

Processing

1void setup() { 2 size(200, 200); 3 noStroke(); 4} 5 6void draw() { 7 background(0); 8 move(); 9} 10 11void move() { 12 float NumOfCycle = 2; 13 14 for (int i = 0; i < width * 2; i++) { 15 float val = 255 * (1 + sin(NumOfCycle * i * 2 * PI / width)) / 2; 16 int x = frameCount % width; 17 fill(val); 18 rect(i + x - width, 0, 1, height); 19 } 20}

rect(i, 0, 1, height);にしてvalの調整でもできると思いますが、私は算数どまりなのでわかりません^^;

投稿2020/12/17 21:48

編集2020/12/17 21:52
TN8001

総合スコア9855

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問