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

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

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

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

Q&A

解決済

1回答

677閲覧

p5.js ある範囲の外側を指定する方法が知りたいです。

mia_flower

総合スコア66

JavaScript

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

0グッド

0クリップ

投稿2021/12/11 12:33

ある範囲の外側を指定したい。

p5.jsで以下の図のように、ある範囲の外側を指定し
そこに描画したい場合どのようにするのがベストなのでしょうか。

イメージ説明

該当のソースコード

function setup() { colorMode(HSB, 360, 100, 100, 100); createCanvas(500, 500); background(0); for(let i=0; i<100; i++){ noStroke(); fill(random(100, 200), random(10, 100), 255, random(10, 50)); rect(random(500/4, 500/4*3), random(500/4, 500/4*3), random(20, 50), random(20, 50)) //以下のcircleを四角形が描かれている範囲の外に描きたい。 circle(random(500/4, 500/4*3), random(500/4, 500/4*3), random(20, 50), random(20, 50)) } }

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんな感じで如何でしょうか?
四角形と円で表示するエリアの判定を逆にしているだけです。
違いが分かるよう、四角形と円で色を変えています。

https://jsfiddle.net/cx20/wtd0sopx/

JavaScript

1function setup() { 2 colorMode(HSB, 360, 100, 100, 100); 3 createCanvas(500, 500); 4 background(0); 5 for (let i = 0; i < 1000; i++) { 6 noStroke(); 7 fill(random(100, 200), random(10, 100), 255, random(10, 50)); 8 9 let rect_rand_x = random() * 500; 10 let rect_rand_y = random() * 500; 11 let rect_rand_width = random(20, 50); 12 let rect_rand_height = random(20, 50); 13 if (rect_rand_x > 125 && rect_rand_x < 375 && 14 rect_rand_y > 125 && rect_rand_y < 375) { 15 rect(rect_rand_x, rect_rand_y, rect_rand_width, rect_rand_height); 16 } 17 //以下のcircleを四角形が描かれている範囲の外に描きたい。 18 fill(i % 360, 80, 100); 19 let circle_rand_x = random() * 500; 20 let circle_rand_y = random() * 500; 21 let circle_rand_diameter = random(20, 50); 22 if (circle_rand_x < 125 || circle_rand_x > 375 || 23 circle_rand_y < 125 || circle_rand_y > 375) { 24 circle(circle_rand_x, circle_rand_y, circle_rand_diameter); 25 } 26 } 27}

■ 実行結果
イメージ説明

■ 判定処理のイメージ
イメージ説明

・xの範囲が125~375かつyの範囲が125~375の場合、四角形のエリア内になります。
・xの範囲が125未満もしくは375以上、もしくはyの範囲が125未満もしくは375以上の場合、四角形のエリア外になります。

投稿2021/12/11 16:18

編集2021/12/11 17:34
cx20

総合スコア4633

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

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

mia_flower

2021/12/11 23:55

図も描いて頂き、とてもわかりやすい解説ありがとうございます。 if文を使ってエリアを指定すればいいのですね!理解致しました。
mia_flower

2021/12/12 00:24

ご指摘ありがとうございます..!ellipse()と混同しておりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問