빙수달 게임 개발 노트

[C++] 두 원의 관계를 판단하는 프로그램 본문

Programming/C++

[C++] 두 원의 관계를 판단하는 프로그램

빙수달 2024. 12. 18. 23:52
#include <iostream>

using namespace std;

double circle1_center_circle2_center_distance(double x1, double y1, double a1, double b1);

int main(void)
{
	double x1, y1, a1, b1 = 0;
	cin >> x1 >> y1 >> a1 >> b1;
	cout << "Circle1의 중심은 (" << x1 << "," << y1 << ")이고 Circle2의 중심은 (" << a1 << "," << b1 << ")이다.\n";
	double circle1_radius = 0;
	double circle2_radius = 0;
	cin >> circle1_radius >> circle2_radius;
	cout << "Circle1의 반지름은 " << circle1_radius << "이고, Circle2의 반지름은 " << circle2_radius << "이다.\n";

	if (circle1_radius > ((circle2_radius)+circle1_center_circle2_center_distance(x1, y1, a1, b1)))
	{
		cout << "circle2는 circle1 내부에 있다.";
		return 0;
	}
	else if (circle2_radius > ((circle1_radius)+circle1_center_circle2_center_distance(x1, y1, a1, b1)))
	{
		cout << "circle1은 circle2 내부에 있다.";
		return 0;
	}
	
	if (circle1_center_circle2_center_distance(x1, y1, a1, b1) < (circle1_radius + circle2_radius))
	{
		cout << "circle1과 circle2는 겹친다.";
	}
	else if (circle1_center_circle2_center_distance(x1, y1, a1, b1) > (circle1_radius + circle2_radius))
	{
		cout << "circle1과 circle2는 겹치지 않는다.";
	}
	else if (circle1_center_circle2_center_distance(x1, y1, a1, b1) == (circle1_radius + circle2_radius))
	{
		cout << "circle1과 circle2는 접한다.";
	}
	

	return 0;
}

double  circle1_center_circle2_center_distance(double x1, double y1, double a1, double b1)
{
	double circle1_center_circle2_center_distance;
	circle1_center_circle2_center_distance = sqrt((a1 - x1) * (a1 - x1) + (b1 - y1) * (b1 - y1));
	return circle1_center_circle2_center_distance;
}