2012-11-30 3 views
0

이것은 수학에 관한 모든 것입니다. 내가 수치스럽게 배운 것을 잊어 버린 것은 부끄러운 일입니다.수학 - 자바 스크립트에서 회전 후 이미지 크기를 얻으십시오.

좋아, 자바 스크립트에서 특정 각도로 회전 (캔버스 사용) 후 이미지 크기를 얻으려고합니다. 원래 사각형의 크기가 R (ectangle)입니다

enter image description here

는 말 : 여기 MSPAINT 이외의 다른 도구를 가지고 있지 않기 때문에

enter image description here

+1

(100 + 40 * Math.sqrt (3)) * (100 * Math.sqrt (3) +40) – Passerby

+0

3은 무엇을 나타 냅니까? 각도는 어디로 갔습니까? – user1643156

답변

7

, 당신의 이미지를 다시 사용합니다 W (너비) * RH (여덟),

이 경우 RW=200, RH=80; 반 시계 방향으로, 소정 각도 A를 회전 후

이 경우

도 (또는 라디안 0 <= A <= Math.PI/2)의 0deg <= A <= 90deg,

A=30deg 또는 A=Math.PI/6 새로운 "외부"사각형

, 각면은 두 부분으로 나누어집니다 (설명의 편의상 이미지에 해당).

왼쪽에서

,의 상부 (퍼플) 부분은 N (EW) H (팔) U (p)라고하며, 아래 (적색) 부분 NHL이라고 생각한 (흐름); 아래쪽에

동일한 규칙은, 우리는 NW (IDþ) L (EFT) (블루)과 NWR (ight) (오렌지)가 있습니다. 당신이 각도 A을 사용하는 경우 (

NWL = RW * Math.cos(A); //where A is in radians 
NHL = RW * Math.sin(A); 

NHU = RH * Math.cos(A); 
NWR = RH * Math.sin(A); 

Math.PI*A/180A 대체 :

그래서 새로운 사각형의 크기 (영역) sincos의 정의에 따르면 (NHU + NHL) * (NWL + NWR)

것).

새로운 "외부"너비는 NWL + NWR이고 새로운 "외부"높이는 NHU + NHL이 될 것이므로 이제 모든 것을 계산할 수 있습니다.

+0

자세한 답변을 부탁드립니다. 오타 : NWR은 ** RH ** * Math.sin (A)이어야합니다. – user1643156

+0

@ user1643156 죄송합니다. 고맙습니다. – Passerby

관련 문제