C
의 네 모서리를 b(0)
을 B의 좌표계가있는 모서리 B라고합시다. q
을 B의 x 축의 회전 각이라고합시다.이 모든 각도와 점은 동일한 좌표계에서 지정해야합니다.
은 (물건이 측정 방법에 따라 또는
-q
) 각도
q
하여 벡터
c(i) - b(0)
회전, B에서
c(i)
의 좌표를 확인하는 방법. 이를 위해 회전 행렬을 사용할 수 있습니다.
cq = cos(q)
,
sq = sin(q)
및
(dx, dy) = c(i) - b(0)
으로 설정하십시오. B에서
c(i)
의 좌표는
이다 C.의 중심 S(s)
는 s
의해 스케일링 행렬이라하자 및 R(q)
가 q
의해 회전 행렬이라하자 c = (c(0) + c(2))/2
는하자. B의 코너는 또한 공지 된 구형의
b(i) = c + S(s) * R(q) * (c(i) - c)
모서리 a(0), a(1), a(2), a(3)
주어진다. 우리는 스케일링 매개 변수의 가능한 최대 값을 결정하고자하는 s
모든 지점 B의 b(i)
는
내가 여기 가장 안전하고 간단한 방법은 b(i)
및 a(i)
등을위한의 관련 쌍을 고려하는 것입니다 생각 사각형 A. 내에 있도록 쌍은 가장 큰 값인 s(i, j)
을 계산하여 s = s(i, j)
이면 b(i)
이 a(j)
의 모서리 영역 내에 있습니다.
a(0)
및 a(2)
가의 반대 모서리하고 c(0)
및 c(1)
는 C. 인접한 모서리 r(j) = a(j) - c
및 d(i) = R(q) * (c(i) - c)
하자하자하자.
각 대각선 i
은
r(j)
에 의해 정의 된 영역 외부로 이동하기 전에 B
s(i, j) = min (|r(j).x|/|d(i).x|, |r(j).y|/|d(i).y|)
의해 스케일링 될 수있다. i = 0, 1
및 j = 0, 2
에 대해 s(i, j)
을 계산하고 s
을 해당 값의 최소값으로 설정하십시오.
q
는 당신이 화면 비율의 문제를 설명하기 위해 변환을 q' = atan2(kx * sin(q), ky * cos(q))
q
에 적용해야 할 수 있습니다 측정 방법에 따라.
알려진 변수를 명확하게 설명하지 못했을 것입니다. 직사각형 C의 좌표와 X 축 (모든 좌표계 A에 있음)의 회전 각도 만 알려져 있습니다. B의 좌표는 알 수 없습니다. 그러나 A와 B의 종횡비가 모두 같고 B가 A 내부에 들어갈 수있는 가장 큰 직사각형 인 것으로 알려져 있습니다. C 직사각형은 실제로 A의 내부에있을 수 있으며 다른 종횡비를 가질 수 있습니다. – JPK
B를 더 쉽게 계산할 수있는 추가 제약 조건 : 사각형 B가 사각형 A의 가운데에 배치됩니다. – JPK