Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Kiểm tra đường thẳng tiếp xúc/giao cắt đường tròn C++

Cho đường tròn tâm (h,k), bán kính r và đường thẳng ax + by + c = 0. Xác định vị trí tương đối:

  • Khoảng cách d > r → ngoài (không giao)
  • d = r → tiếp xúc
  • d < r → cắt (giao tại 2 điểm)

Khoảng cách từ tâm đến đường thẳng: d = |ah + bk + c| / √(a² + b²)

Ví dụ minh họa

#include <iostream>
#include <cmath>
using namespace std;

void checkLineCircle(int a, int b, int c, int h, int k, int r) {
    int dist = abs(a * h + b * k + c) / sqrt(a * a + b * b);
    if (r == dist)
        cout << "Tiep xuc duong tron";
    else if (r > dist)
        cout << "Cat duong tron (2 diem)";
    else
        cout << "Ngoai duong tron";
}

int main() {
    int r = 5, h = 0, k = 0;
    int a = 3, b = 4, c = 25; // 3x + 4y + 25 = 0
    checkLineCircle(a, b, c, h, k, r);
}

Kết quả

Tiep xuc duong tron