Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตรวจสอบว่าวงกลมอยู่ภายในวงกลมอื่นหรือไม่ใน C++


สมมติว่าเรามีวงกลมสองวง (จุดศูนย์กลางและค่ารัศมี) เราต้องตรวจสอบวงกลมหนึ่งวงว่าพอดีในวงกลมอื่นหรือไม่ มีสาเหตุที่เป็นไปได้สามประการ

  • วงกลมที่เล็กกว่าอยู่ภายในวงกลมที่ใหญ่กว่าโดยสมบูรณ์โดยไม่แตะกัน ในกรณีนี้ ผลรวมของระยะห่างระหว่างจุดศูนย์กลางกับรัศมีที่เล็กกว่า จะน้อยกว่ารัศมีที่ใหญ่กว่า ดังนั้นอันที่เล็กกว่าจะอยู่ภายในอันที่ใหญ่กว่า

  • กรณีที่สองคือวงกลมที่เล็กกว่าอยู่ภายในวงกลมที่ใหญ่กว่า แต่ยังสัมผัสกับเส้นรอบวงของวงกลมที่ใหญ่กว่าด้วย

  • กรณีที่สามคือ บางส่วนของวงกลมที่เล็กกว่าอยู่ภายในวงกลมที่ใหญ่กว่า

ในการแก้ปัญหานี้ เราต้องหาระยะห่างระหว่างศูนย์กลางทั้งสอง จากนั้นใช้ค่าระยะทางและรัศมี เราจะพิจารณากรณีเหล่านั้น

ตัวอย่าง

#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