구현 방식
- 해당 거리를 원이라고 생각하면 아래와 같다.
- 일치할 때
- 외접할 때
- 내접할 때
- 포함 관계일 때
- 외부에 있을 때
- 둘이 교차할 때
코드
#include <bits/stdc++.h>
using namespace std;
int getDistSquared(pair<int, int>& p1, pair<int, int>& p2);
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int N;
cin >> N;
pair<int, int> p1, p2;
int d, d1, d2, d1pd2,d1md2;
while (N--)
{
cin >> p1.first >> p1.second >> d1;
cin >> p2.first >> p2.second >> d2;
d1pd2 = (d1 + d2) * (d1 + d2);
d1md2 = (d1 - d2) * (d1 - d2);
d = getDistSquared(p1, p2);
// 일치할 때
if (d == 0 && d1 == d2)
cout << "-1" << "\n";
// 외접 할 때
else if (d1pd2 == d)
cout << "1" << "\n";
// 외부에 있을 때
else if (d1pd2 < d)
cout << "0" << "\n";
else
{
// 내접 할 때
if (d == d1md2)
cout << 1 << "\n";
// 포함 관계일 때
else if (d < d1md2)
cout << 0 << "\n";
// 교차할 때
else
cout << 2 << "\n";
}
}
return 0;
}
int getDistSquared(pair<int, int>& p1, pair<int, int>& p2)
{
return (p1.first - p2.first) * (p1.first - p2.first) + (p1.second - p2.second) * (p1.second - p2.second);
}