[Math] 세점을 지나는 원의중심(외심) 구하는 법
📄외적을 이용한 선분과 선분의 교차점 구하기
세 개의 점을 지나는 원은 단 하나만 존재하며, 이를 외접원이라고 합니다.. 이 외접원의 중심을 외심이라고 하며, 외심을 구하는 방법을 알아봅시다.
✏️외심의 특징
외심의 특징은 다음과 같습니다.
- 삼각형의 세 변의 수직 이등분선은 외심에서 만난다.
- 삼각형의 외심에서 세 꼭짓점에 이르는 거리는 같다.
이 성질을 이용하면, 두 변의 수직 이등분선이 만나는 점을 구하여 외심을 찾을 수 있습니다.
✏️풀이
두 변의 수직 이등분선 방정식을 y=mx+b, y=nx+c라고 할 때, 두 식을 연립해서 풀면 중심의 좌표가 나오게됩니다.
✏️기울기 공식
주어진 세 점을 각각 , , 라 하자. 외심을 구하려면 두 변의 수직 이등분선을 찾아야 하며, 이를 위해 먼저 변의 기울기를 계산합니다.
기울기 공식:
\(m=\frac{\Delta y}{\Delta x}=\frac{y_2-y_1}{x_2-x_1}\)
직교하는 기울기 공식:
\(m'=-\frac{x_2-x_1}{y_2-y_1}\)
✏️수직 이등분선의 방정식
각 수직 이등분선의 방정식은 다음과 같습니다.
\(y=mx+b,y=nx+c\)
각 방정식의 기울기를 구해줍니다.
\(AB기울기=\frac{Y_B-Y_A}{X_B-X_{A}}, BC기울기=\frac{Y_C-Y_B}{X_C-X_{B}}\)
b와 c는 두 선분 중앙의 위치 값을 안다면 x와 y를 대입해 풀 수 있습니다.
\(b=y-mx, c =y-nx\)
✏️외심 좌표계산
두 수직 이등분선의 방정식을 연립하여 외심의 좌표를 구해줍니다.
\(mx-nx=c-b\)
\(x(m-n)=c-b\)
\(x=\frac{c-b}{m-n}\)
\(y=m(\frac{c-b}{m-n})+b\)
💻코드
public static Vector2 GetCircumCircleCenter(Vector2 p0, Vector2 p1, Vector2 p2)
{
// slope equation : m = dy/dx = (y_2 - y_2)/(x_2 - x_1)
// perpendicular slope equation : m' = -(dx/dy) = -(x_2 - x_1)/(y_2 - y_2) // y = mx+b
float m = -(p1.x - p0.x) / (p1.y - p0.y);
// y = nx+c
float n = -(p2.x - p1.x) / (p2.y - p1.y);
Vector2 p0p1Center = Vector2.Lerp(p0, p1, 0.5f);
Vector2 p1p2Center = Vector2.Lerp(p1, p2, 0.5f);
float b = p0p1Center.y - m * p0p1Center.x;
float c = p1p2Center.y - n * p1p2Center.x;
float x = (c - b) / (m - n);
float y = m * x + b;
return new Vector2(x, y);
}
댓글남기기