이러한 상황에서해야 할 일은 제약 조건을 수학적으로 설명하고 단순화하는지 확인하는 것입니다. 이는 기하학적 처리에 필수적인 기술입니다.
이미지 영역의 왼쪽 하단이 (0,0)이라고 가정 해 봅시다. 그러면 직사각형의 왼쪽 아래 모서리가 (10,10)에 놓입니다. 우상 구석 (x1, y1)을 호출합니다. 저는 여러분이 이미 원이 어디에 있는지를 계산했다고 가정 할 것입니다. 그 원은 꽤 간단합니다. 우리는 중심 (x2, y2)와 반경 r을 호출 할 것입니다.
첫 번째 제한 : 직사각형은 높이보다 3 배 넓습니다.
x1-10 = 3 * (y1-10) or x1 = 3 * (y1-10) + 10 or x1 = 3*y1 - 20
두 번째 제약 조건 : x1, y1은 원에서 10 픽셀 떨어져 있습니다. 첫 번째 원보다 10 픽셀 큰 다른 원을 설명하면 그 점이 그 위에 놓입니다.
(x1-x2)^2 + (y1-y2)^2 = (r+10)^2
1 개를 대체 :
(3*y1 - 20 - x2)^2 + (y1-y2)^2 = (r+10)^2
R, X2 및 Y2가 알려져 있기 때문이 중대하다; 유일하게 알려지지 않은 왼쪽은 y1입니다. 모든 y1을 모을 수 있는지 봅시다.
(3*y1 + (-20 - x2))^2 + (y1-y2)^2 = (r+10)^2
3^2*y1^2 + 2*(3*y1*(-20-x2) + (-20-x2)^2 + y1^2 + 2*y1*-y2 + y2^2 = (r+10)^2
3^2*y1^2 + y1^2 + 6*(-20-x2)*y1 + 2*-y2*y1 + y2^2 = (r+10)^2
(3^2+1)*y1^2 + (-120 - 6*x2 - 2*y2)*y1 + y2^2 = (r+10)^2
이 시점에서 이차 방정식과 거의 같습니다.또 하나의 작은 비틀기 :
10 * y1^2 + (-120 - 6*x2 - 2*y2) * y1 + (y2^2 - (r+10)^2) = 0
마지막 단계는 Quadratic Formula을 적용하는 것입니다.
2 차 방정식에서 가능한 두 가지 대답이 있지만 그 중 하나는 원의 맨 반대쪽에 사각형을 배치합니다. 이 경우를 제거하는 것이 쉬워야합니다.
이것은 알고리즘 질문보다는 삼각법 문제입니다. 이것을 Math로 옮길 수도 있습니다. – templatetypedef