检查线条是否触及或与 C++ 中的圆相交


假设我们有一个圆和其他直线。我们的任务是找出线条是否触及圆或与之相交,否则,它将从外面穿过。因此,有三种不同的情况,如下所示-

这里,我们将按照以下步骤来解决它。它们如下所示-

  • 找出圆心和给定直线之间的垂直线 P
  • 将 P 与半径 r 进行比较 -
    • 如果 P > r,则在外面
    • 如果 P = r,则相切
    • 否则,在里面

为了获得垂直距离,我们必须使用此公式(圆心点为 (h, k))

$$\frac{ah+bk+c}{\sqrt{a^2+b^2}}$$

示例

运行演示

#include <iostream>
#include <cmath>
using namespace std;
void isTouchOrIntersect(int a, int b, int c, int h, int k, int radius) {
   int dist = (abs(a * h + b * k + c)) / sqrt(a * a + b * b);
   if (radius == dist)
      cout << "Touching the circle" << endl;
   else if (radius > dist)
      cout << "Intersecting the circle" << endl;
   else
      cout << "Outside the circle" << endl;
}
int main() {
   int radius = 5;
   int h = 0, k = 0;
   int a = 3, b = 4, c = 25;
   isTouchOrIntersect(a, b, c, h, k, radius);
}

输出

Touching the circle

更新于: 2019-10-22

580 次浏览

Kickstart Your 职业生涯

完成课程获得认证

开始
广告