lws1996   3년 전

원의 방정식이 존재한다는 것을 알아보고

이를 이용해서 근의 공식을 이용해서 풀려고 접급했는데 계속 틀렸다고 떠서 답답한 마음에 글 올려봅니다 ㅠㅠ

원 방정식 

원 1 : (x - x1) ^2 + (y - y1)^2 = r1^2

원 2 : (x - x2) ^2 + (y - y2)^2 = r2^2

두 방정식을 빼면 

->  -2*(x1 - x2)x + x1^2 - x2^2 + y1^2 - y2^2 -(r1^2 - r2^2) = 2(y1 - y2)y

-> -1*(x1 -x2) / (y1 - y2)x + (x1^2 - x2^2 + y1^2 - y2^2 -(r1^2 - r2^2))/2(y1 - y2) = y


이하 

temp0 = (x1 -x2) / (y1 - y2)

temp1 = (x1^2 - x2^2 + y1^2 - y2^2 -(r1^2 - r2^2))/2(y1 - y2)

라고 하겠습니다.


여기서 원1 의 방정식 y 자리에 위의 식을 대입하면 

 x^2 - 2x1x + x1^2 + (-1*temp0x + temp1 - y1)^2  = r1^2

이하 

temp2 = temp1 - y1

라고 하겠습니다.

->  x^2 - 2x1x + x1^2 + (temp0x - temp2)^2 - r1^2 = 0

->  x^2 - 2x1x + x1^2 + temp0^2 * x^2 - 2 temp0temp2x + temp2^2 - r1^2 = 0

-> (temp0^2 + 1) x^2 - 2(x1 + temp0temp2)x + x1^2 + temp2^2 - r1^2 = 0

여기서 2차방정식의 해의 개수를 구하면 접점이 몇개인지 알 수 있습니다

b^2 - 4ac > 0 : 접점 2개

b^2 - 4ac = 0 : 접점 1개

b^2 - 4ac < 0 : 접점 0개

이 원리를 이용하여 작업을 했고 작업 중 X1 == X2 ,Y1  == Y2 한 경우들은 따로 다뤄줘야하기 때문에 

두원의 방정식을 빼준 식인

-> -2*(x1 - x2)x + x1^2 - x2^2 + y1^2 - y2^2 -(r1^2 - r2^2) = 2(y1 - y2)y

여기서 y1 = y2 나 x1 = x2를 대입해주어 (여기선 y1 =y2)

-> x = (x1^2 - x2^2) / 2*(x1 - x2) + (-(r1^2 - r2^2)) / 2*(x1 - x2)

-> x = (x1 + x2) / 2 + ( -(r1^2 - r2^2)) / 2*(x1 - x2)


이하 

x = tempx

이것을 다시 원의 방적식에 대입하면 

(tempx - x1)^2 + y^2 - 2y1y + y1^2 - r1^2 = 0

y^2 -2y1y +y1^2 + (tempx - x1)^2 - r1^2 = 0

b^2 - 4ac를 활용하면

-> 4y1^2 - 4(y1^2 + (tempx - x1)^2 - r1^2)

-> - 4(tempx - x1)^2 + 4r1^2

이런 식으로 풀었습니다!

예제는 답이 나오는데 답은 계속 틀렸다고 나오네요ㅠ...

근의 공식 푸는데 너무 시간을 투자해서 어디가 틀린지 꼭 알고 싶습니다... 

아시는 분 계신다면 도움 부탁드립니다!

pichulia   3년 전

실수 자료형에서 == 연산자는 믿을게 못됩니다.

컴퓨터로 표현할 수 있는 수에는 한계가 있습니다.

lws1996   3년 전

와... 진짜 감사합니다.. 덕분에 한개 더 알아갑니다 !

댓글을 작성하려면 로그인해야 합니다.