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

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

新規登録して質問してみよう
ただいま回答率
85.35%
アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Q&A

解決済

2回答

30617閲覧

2つの円の重なった面積

退会済みユーザー

退会済みユーザー

総合スコア0

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

0グッド

2クリップ

投稿2020/02/29 14:41

編集2020/02/29 18:36

2つの円の重なった面積を求める式を知りたいです。

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

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

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

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

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

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

swordone

2020/02/29 15:30

この式で何が不満なの?
hwatarig

2020/02/29 15:59

せっかくご自身で調べられた式をどうして消してしまったのでしょうか……。ますます「丸投げの質問」になってしまっています。数式を調べた後、何につまづいているのかを質問文に記載ください。
退会済みユーザー

退会済みユーザー

2020/02/29 16:03

Math.pow(r1, 2) * Math.acos((Math.pow(range, 2) + Math.pow(r1, 2) - Math.pow(r2, 2)) / (2 * range * r1)) + Math.pow(r2, 2) * Math.acos((Math.pow(range, 2) + Math.pow(r2, 2) - Math.pow(r1, 2)) / (2 * range * r2)) - (1/2) * Math.sqrt(Math.pow(4 * range, 2) * Math.pow(r1, 2) - Math.pow(Math.pow(range, 2) + Math.pow(r1, 2) + Math.pow(r2, 2), 2)); 自力で頑張ってみたのですが、ダメでした。 どちらにも詳しいかたにご教授頂きたいです。
swordone

2020/02/29 16:11

2乗ならpowを使う必要は無いのでは? あとなんでこっちに書いているのかもわかりません。
退会済みユーザー

退会済みユーザー

2020/02/29 16:33

申し訳ないです。詳しく教えて頂けると助かります。
swordone

2020/02/29 17:00

ってか、式違いますね。
退会済みユーザー

退会済みユーザー

2020/02/29 17:06

ほんとですか、、、正解を教えて頂けると助かります
swordone

2020/02/29 18:29

いや、回答にもう出てるじゃん なんで無視する?
退会済みユーザー

退会済みユーザー

2020/02/29 18:37

解決しましたありがとうございます
m.ts10806

2020/02/29 23:09

読んでますかね。 >複数のユーザーから「意図的に内容が抹消された質問」という意見がありました 解決後に編集機能を用いて質問内容を改変し関係のない内容にしたり、内容を削除する行為は禁止しています。 投稿していただいた質問は、後に他の誰かが困ったときに助けになる情報資産になると考えるからです。 「質問を編集する」ボタンから編集を行い、他のユーザにも質問内容が見えるように修正してください。
guest

回答2

0

この式で良いと思いますよ。
この式が調べて出てきたということで、この式は妥当であることも考慮しつつ、考えさせていただけますでしょうか。
この式になる根拠を回答として添えたいと思います。

以下のように、円1と円2の交点をA, B, それぞれの円の中心点をO1, O2とします。
そうすると、直感的にもわかる通り、求めたい(赤い)図形は、上下で対称的になっています。
イメージ説明

そのため、上もしくは下を求めて2倍すればよいということになります。
さらに、それぞれの円の扇形から三角形を引いたものを足せば赤色の面積が求められることが見えます。
図のように角度θ1、θ2を置くと、

s = ((円O1の角度θ1扇形の面積) + (円O2の角度θ2扇形の面積) - (三角形AO1O2の面積)) * 2

と求められます。それぞれについて求めると、(円周率はpiとします)

(円O1の角度θ1扇形の面積) = pi * r1 ^ 2 * ( θ1 / (2*pi)) (円O2の角度θ2扇形の面積) = pi * r2 ^ 2 * ( θ2 / (2*pi)) (三角形AO1O2の面積) = d * r1 * sin(θ1) * (1/2)

まとめると、このようになります!

s = (r1 ^ 2 * θ1) + (r2 ^ 2 * θ2) - (d * r1 * sin(θ1))

したがって、求めるべきはθ1, θ2, sin(θ1)ということになります。
θ1, θ2は余弦定理でcos(θ1)やcos(θ2)を求める式を使用する。
sin(θ1)は、√(1-cos^2(θ1)の変換と余弦定理を使用すると上記のような式になります。

投稿2020/02/29 16:05

Matsui_hero

総合スコア346

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

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

退会済みユーザー

退会済みユーザー

2020/02/29 16:21

JavaScriptの式にするとどうしても想定の結果にならなくて、 私の実装の仕方か悪いのは分かるのですが、、、、
guest

0

ベストアンサー

JavaScriptの式にするとどうしても想定の結果にならなくて、
私の実装の仕方か悪いのは分かるのですが、、、、

投稿2020/02/29 16:21

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2020/02/29 16:22

JavaScriptの式にするとどうしても想定の結果にならなくて、 私の実装の仕方か悪いのは分かるのですが、、、、
KojiDoi

2020/02/29 17:13

欲張って最初から長い式を立てず、 Math.pow(range, 2) とか Math.pow(r1, 2) とか、ひとつづつ値をたしかめれば、どこが問題かいずれ見つかるでしょう。
退会済みユーザー

退会済みユーザー

2020/02/29 17:20

ひとつづつ確かめたのです、どこが間違っているのかが分からない状況です、、
m.ts10806

2020/02/29 23:10 編集

この(編集後の)質問だけ見て「JavaScriptの式にした」と分かる人は世界中どこ探してもいませんね。 そしてこの自身の回答をベストアンサーに選んでどういうつもりでしょう。 何の参考になるのでしょう。 情報技術の基本は「情報共有」です。自己満足だけでやっていきたい人に誰も手を差し伸べるはずがない。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問