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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Processing

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

Q&A

解決済

1回答

6012閲覧

Processingで物体同士が重なった時に後ろの物体の色を変えたい

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Processing

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

0グッド

0クリップ

投稿2017/07/03 14:17

###前提・実現したいこと
Processingで物体同士が重なった時に後ろの物体の色を変えるプログラムを書いています。Processingで2つの丸を描画し、丸がが触れ合う瞬間から完全に離れるまで、後ろの動いていない丸の色を変えたいです。

###発生している問題・エラーメッセージ
どのようにアプローチすればいいか、ここまで書いた後につまってしまいました。

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

Processing

1float x; 2 3void setup() { 4 size(700, 500); 5 x = 700; 6} 7 8void draw() { 9 background(204); 10 noStroke(); 11 fill(#0F890E); 12 rect(0, 400, 700, 100); 13 fill(#B71A31); 14 ellipse(40, 450, 60, 60); 15 fill(#EAD807); 16 x -= 2; 17 ellipse(x, 450, 50, 50); 18}

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

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

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

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

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

guest

回答1

0

ベストアンサー

片方の円の半径がR1,もう一方がR2としますと円が重なるということは、二つの円の中心どうしの距離がR1+R2より小さいかどうかで判定できます。二つの円の中心の直交座標での座標が(x1,y1),(x2,y2)だとすると距離distanceは

float dx = x1 - x2;
float dy = y1 - y2;
float distance = sqrt(dx * dx + dy * dy);

で求まります。いわゆるピタゴラスの定理というやつです。

投稿2017/07/03 14:44

編集2017/07/04 03:47
KSwordOfHaste

総合スコア18392

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

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

退会済みユーザー

退会済みユーザー

2017/07/04 03:13

ご回答ありがとうございます。 float distance = Math.sqrt(dx * dx + dy * dy); の部分で Type mismatch. "double" does not match with "float". というエラーが出てしまいました
KSwordOfHaste

2017/07/04 03:47

あ、うっかりしてました。Math.sqrtでなくsqrtと書くべきでした。回答を直しておきます。
退会済みユーザー

退会済みユーザー

2017/07/05 11:46

ご回答ありがとうございます。 アドバイスをいただいて、以下のプログラムを買いたのですが、色が変わらないようです。 float x1, x2, y1, y2; float dx = x1 - x2; float dy = y1 - y2; float d; void setup() { size(700, 500); x1 = 700; x2 = 40; y1 = 450; y2 = 450; } void draw() { background(204); noStroke(); fill(#0F890E); rect(0, 400, 700, 100); fill(#B71A31); ellipse(x2, y2, 60, 60); fill(#EAD807); x1 -= 2; ellipse(x1, y1, 50, 50); d = sqrt(dx * dx + dy * dy); if (d >= 30+25) { fill(0); ellipse(x2, y2, 60, 60); } }
KSwordOfHaste

2017/07/05 12:50

円の座標がかわったならdx,dyもまた計算しなおしてください。
退会済みユーザー

退会済みユーザー

2017/07/07 23:40

わかりました。ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問