1002번 - 터렛
원의 방정식이 존재한다는 것을 알아보고
이를 이용해서 근의 공식을 이용해서 풀려고 접급했는데 계속 틀렸다고 떠서 답답한 마음에 글 올려봅니다 ㅠㅠ
원 방정식
원 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 한 경우들은 따로 다뤄줘야하기 때문에
두원의 방정식을 빼준 식인
여기서 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
이런 식으로 풀었습니다!
예제는 답이 나오는데 답은 계속 틀렸다고 나오네요ㅠ...
근의 공식 푸는데 너무 시간을 투자해서 어디가 틀린지 꼭 알고 싶습니다...
아시는 분 계신다면 도움 부탁드립니다!
실수 자료형에서 == 연산자는 믿을게 못됩니다.
컴퓨터로 표현할 수 있는 수에는 한계가 있습니다.
와... 진짜 감사합니다.. 덕분에 한개 더 알아갑니다 !
댓글을 작성하려면 로그인해야 합니다.
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
이런 식으로 풀었습니다!
예제는 답이 나오는데 답은 계속 틀렸다고 나오네요ㅠ...
근의 공식 푸는데 너무 시간을 투자해서 어디가 틀린지 꼭 알고 싶습니다...
아시는 분 계신다면 도움 부탁드립니다!