質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Processing

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

Q&A

解決済

1回答

4973閲覧

長方形の面積の平均に近似している長方形に色をつけたい

alastashim

総合スコア16

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Processing

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

0グッド

0クリップ

投稿2017/09/15 09:15

###前提・実現したいこと

長方形の面積の平均に近似している長方形に色をつけたい

###該当のソースコード

processing

1 2float [] x = new float[100]; 3float [] y = new float[100]; 4float [] rect_w = new float[100]; 5float [] rect_h = new float[100]; 6float [] alpha = new float[100]; 7 8float max=0; 9float max_i=0; 10 11void setup() { 12 size(400, 300); 13 14 for ( int i=0; i<100; i++) { 15 x[i] = random(50, width-50); 16 y[i] = random(50, height-50); 17 rect_w [i] = random(1, 100); 18 rect_h [i] = random(1, 100); 19 20 alpha[i] = rect_w[i] * rect_h[i]; 21 22 23 if ( rect_w[i]*rect_h[i] > max) { 24 max = rect_w[i]*rect_h[i]; 25 max_i = i; 26 } 27 } 28} 29void draw() { 30 background(255); 31 for ( int i=0; i<100; i++) { 32 fill(255,50); 33 if (max == rect_w[i] * rect_h[i]) { 34 fill(255, 0, 0); 35 } 36 rectMode(CENTER); 37 rect(x[i], y[i], rect_w[i], rect_h[i]); 38 } 39}

###補足情報(言語/FW/ツール等のバージョンなど)
現在上に記載したコードは、長方形の面積の最大値に赤色をつけるというコードです。これを書き換えて長方形の面積の平均に近似している長方形に色をつけたいのですが、どこを書き換え、どこに何を加えたらよいのかご教授願いたいのです。よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

"長方形の面積の平均に近似している長方形"を平均との差が一番小さな長方形と考えた場合、下記のような記述ではいかがでしょうか。
最大ではなく最小を求めるため、変数名はmaxからminに変更しています。

Processing

1float [] x = new float[100]; 2float [] y = new float[100]; 3float [] rect_w = new float[100]; 4float [] rect_h = new float[100]; 5float [] alpha = new float[100]; 6 7float average = 0; 8float min = 999999; 9float min_i = 0; 10 11void setup() { 12 size(400, 300); 13 14 for ( int i=0; i<100; i++) { 15 x[i] = random(50, width-50); 16 y[i] = random(50, height-50); 17 rect_w [i] = random(1, 100); 18 rect_h [i] = random(1, 100); 19 alpha[i] = rect_w[i] * rect_h[i]; 20 } 21 22 // 平均を求める 23 for (int i = 0; i < alpha.length; i++) { 24 average += alpha[i]; 25 } 26 average = average / (float)alpha.length; 27 28 // 平均との差が小さい長方形を調べる 29 for (int i = 0; i < alpha.length; i++) { 30 if (abs(average - alpha[i]) < min) { 31 min = abs(average - alpha[i]); 32 min_i = i; 33 } 34 } 35} 36 37void draw() { 38 background(255); 39 for ( int i=0; i<100; i++) { 40 fill(255,50); 41 if (i == min_i) { 42 fill(255, 0, 0); 43 } 44 rectMode(CENTER); 45 rect(x[i], y[i], rect_w[i], rect_h[i]); 46 } 47}

投稿2017/09/15 11:03

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

alastashim

2017/09/15 13:13

拙い説明の中で回答ありがとうございます。 回答を見て、自分の考えが非常に硬いことに気づきました。 アドバイスありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問