2010-12-31 2 views
1

폭이 w1이고 높이가 h1 인 임의의 입력 이미지가 있다고 가정합니다. 이 이미지를 시작 위치까지 360도 회전시켜야합니다. 그러나 이미지가 원을 제외한 다른 것이라면 크기가 w1 h1으로 유지되는 경우 이미지의 가장자리가 잘립니다.회전 된 이미지를위한 가능한 가장 작은 바운딩 박스

Figure

무엇 그때 필요하면 캔버스 크기를 결정하는 것 모두를 위해 사용될 수있다 (폭 W2 높이 H2)는 입력 화상의 버전 회전. 나는 w2 == h2을 알고 있으므로 원하는 캔버스 크기는 정사각형입니다. 왜냐하면 우리가 중심점을 중심으로 회전하고 있으며 360도 회전 한 후 최종 이미지가 본질적으로 원이기 때문입니다.

또 다른 고려해야 할 점은 정사각형과 같은 물체가 튀어 나오는 모서리를 가지므로 양쪽 치수의 너비 또는 높이의 최대 값을 사용하는 것만으로는 작동하지 않는다는 것입니다. 내가 함께 올라와있다

하나 개의 솔루션은, max(w1, h1) * 2W2H2 설정 모두를 회전 한 다음 모든 투명 픽셀을 트리밍하여 I (예를 들어 필요 이상으로 캔버스 큰 만드는 것입니다. 이것은 매우 아니다 효율적이고 나는 차라리 솔직 소감 경계 상자를 계산할 수있을 것입니다.

답변

3

이것은 기하학적 질문입니다. 이러한 원의 직경은 또한 그래서 √(w1^2+h1^2)

w2 = h2 = √(w1^2+h1^2)

것 당신은 기본적으로 원래 캔버스 다음 W2 = H2 = D

을 새겨 것이다 원의 지름 (d)를 찾으려면 클리핑 (clipping)을 피하기 위해, 반올림보다는 그 결과의 한도를 취하는 것이 좋습니다.

2

이미지가 사각형으로 회전되는 경우, 캔버스 높이를하고 빗변과 동일한 길이를 폭해야 할 것이다.

w = h = sqrt (h^2 + w^2)

(210)

당신이 가지고있는 이미지가 사각형에없는 경우

그러나 본질적으로 멀리 떨어진 중심에서 점을 발견 할 것이다 (나는 ActionScript를 모르는) ...

PS : 늦었어요. 그리고 무언가 잘못되었을 때 미안 해요.

1

캔버스가 정사각형이어야합니다.

녹색 피겨와 같이 몸체를 임의의 점 (이 예제에서는 점 A)을 중심으로 회전시키려는 경우 정사각형의 변은 몸체에서 가장 먼 점까지의 거리의 두 배입니다.

alt text

관련 문제