1 분 소요

📄외적을 이용한 선분과 선분의 교차점 구하기

세 개의 점을 지나는 원은 단 하나만 존재하며, 이를 외접원이라고 합니다.. 이 외접원의 중심을 외심이라고 하며, 외심을 구하는 방법을 알아봅시다.

Image

✏️외심의 특징

외심의 특징은 다음과 같습니다.

  1. 삼각형의 세 변의 수직 이등분선은 외심에서 만난다.
  2. 삼각형의 외심에서 세 꼭짓점에 이르는 거리는 같다.

이 성질을 이용하면, 두 변의 수직 이등분선이 만나는 점을 구하여 외심을 찾을 수 있습니다.
Image

✏️풀이

두 변의 수직 이등분선 방정식을 y=mx+b, y=nx+c라고 할 때, 두 식을 연립해서 풀면 중심의 좌표가 나오게됩니다.
Image

✏️기울기 공식

주어진 세 점을 각각 , , 라 하자. 외심을 구하려면 두 변의 수직 이등분선을 찾아야 하며, 이를 위해 먼저 변의 기울기를 계산합니다.

기울기 공식:
\(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}\)
Image

✏️수직 이등분선의 방정식

각 수직 이등분선의 방정식은 다음과 같습니다.
\(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}}\)

\[AB기울기=m=-\frac{X_B-X_{A}}{Y_B-Y_A}, BC기울기=n=-\frac{X_C-X_{B}}{Y_C-Y_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);  
}



댓글남기기