C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

円が別の円の内側にあるかどうか、C++ではないかどうかを確認します


2つの円(中心点と半径の値)があるとすると、1つの円が別の円の内側に収まっているかどうかを確認する必要があります。考えられる原因は3つあります。

  • 小さい方の円は、互いに接触することなく、大きい方の円の内側に完全にあります。この場合、中心間の距離と小さい方の半径の合計は、大きい方の半径よりも小さくなります。したがって、小さい方が大きい方の内側になります。

  • 2番目のケースは、小さい円が大きい円の内側にあるが、大きい円の円周にも接している場合です。

  • 3番目のケースは、小さい円の一部が大きい円の内側にあることです。

これを解決するには、2つの中心間の距離を見つけ、距離と半径の値を使用して、それらのケースを判別する必要があります。

#include <iostream>
#include <cmath>
using namespace std;
void isCircleInside(int x_big, int y_big, int x_small, int y_small, int r_big, int r_small) {
   int distSq = sqrt(((x_big - x_small) * (x_big - x_small)) + ((y_big - y_small) * (y_big - y_small)));
   if (distSq + r_small == r_big)
      cout << "Inside the bigger circle, touching circimferene" << endl;
      else if (distSq + r_small < r_big)
         cout << "Completely inside the bigger circle" << endl;
   else
      cout << "Not inside the bigger circle" << endl;
}
int main() {
   int x1 = 10, y1 = 8;
   int x2 = 1, y2 = 2;
   int r1 = 30, r2 = 10;
   isCircleInside(x1, y1, x2, y2, r1, r2);
}

出力

Completely inside the bigger circle

  1. C++で線が円に接触または交差するかどうかを確認します

    円と別の直線があるとします。私たちの仕事は、線が円に接しているか交差しているかを見つけることです。そうでない場合は、線が外側を通過します。したがって、以下のような3つの異なるケースがあります- ここでは、次の手順で解決します。これらは以下のようなものです- 中心と与えられた線の間の垂線Pを見つけます Pを半径r−と比較します rの場合、外部 P =rの場合、タッチします それ以外の場合は内部 垂直距離を取得するには、次の式を使用する必要があります(中心点は(h、k)) $$ \ frac {ah + bk + c} {\ sqrt {a ^ 2 + b ^ 2}} $$

  2. 特定の円がC++の2つの同心円によって形成されるリングの内側に完全にあるかどうかを確認します

    rです。別のサークルも存在します。その半径(r1)と中心点が与えられているので、その点が最初の2つの円によって形成されるリングの内側にあるかどうかを確認する必要があります。 =rおよび(distance – r1)<=Rの場合、両方がtrueの場合、円はリングの内側にあります。 例 #include <iostream> #include <cmath> using namespace std; bool isInside(int r, int R, int r1, int x, int y) {    int dis = sqrt(x*x+