투영 행렬에서 줌 비율을 계산하려고합니다. 다음 코드는 이미지가 회전되지 않는 한 작동합니다적절한 크기 조정을 위해 회전을 "실행 취소"하는 방법은 무엇입니까?
void UpdateZoomPercent()
{
var zoom = _projMatrix.M11 * glControl.Width/2; // M11 is the top left value
lblZoomPercent.Text = (zoom * 100).ToString("G3") + "%";
}
는 본질적으로 그것은 단지 X 스케일을 소요하고 뷰포트에을 곱합니다. X와 Y는 항상 비율에 따라 비율이 조정되므로 Y를 볼 필요가 없습니다. 내 장면은 2D입니다.
어떻게 회전 요소를 고려해야합니까?
"W"치수에 대해 알고 있지만, 왼쪽 위 3x3 서브 매트릭스 (또는 2x2, 우리는 2D로 작업하고 있기 때문에)로 무엇을 할 지 잘 모르겠습니다. M (0,0)과 M (1,1)은 스케일링과 회전 모두에 사용되며 회전을 다시 계산하는 방법을 모르겠습니다. – mpen
@ 마크 : 회전을 "제외"할 필요는 없습니다. 단지 서브 매트릭스의 열 벡터의 길이를 계산하면 * 스케일링 요소 *입니다. – datenwolf
오! 나는 따라 가지 않고 있었다고 생각한다. 완벽하게 작동합니다. 감사합니다 .-) – mpen