2011-02-07 4 views
3

CATransform3D 구조체의 행렬/열 순서와 관련하여 다소 혼란 스럽습니다. 이 값이 (그래서 [M11 M12 M13 M14] 형태의 첫 번째 행),하지만 당신은에 의해 번역 행렬을 만들 때 (행을 정의하는 것이 보일 것입니다, 처음에는CATransform3D 행/열 순서

[m11 m12 m13 m14] 
[m21 m22 m23 m24] 
[m31 m32 m33 m34] 
[m41 m42 m43 m44] 

: 구조체는 다음과 같이 행렬을 정의 TX, TY, TZ), 매트릭스는 다음과 같이 표시됩니다

[ 1 0 0 0] 
[ 0 1 0 0] 
[ 0 0 1 0] 
[tx ty tz 1] 

내 혼란이 유효한 번역 매트릭스 아니라는 사실에서 유래; 4 요소 열 벡터를 곱하면 그 점을 변환하지 않습니다.

제 생각에 CATransform3D 구조체는 [m11 m12 m13 m14] 값이 첫 번째 열 (첫 번째 행이 아닌)이되도록 열 순서로 값을 저장합니다.

누구든지 확인할 수 있습니까?

답변

4

예, CATransform3D은 OpenGL (ES)가 원하기 때문에 열 순서가 중요합니다. Core Animation은 렌더링을 위해 백그라운드에서 GL을 사용합니다. 당신이 증거를 원하는 경우에, glMultMatrixman 페이지를 체크 아웃 : 4 × 4 열 - 주요 행렬의 요소로 사용되는 16 개 개의 연속적인 값으로

파라미터

미터 포인트. 4 x 4 열 - 주 매트릭스의 요소로 사용되는 16 개의 연속 값.

이 내용은 CALayer의 문서에서 분명히 분명해야합니다.

+0

아니요, 그렇지 않습니다. https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/CoreAnimation_guide/CoreAnimationBasics/CoreAnimationBasics.html#//apple_ref/doc/uid/TP40004514-CH2-SW16 – idz

+0

@idz 링크를 참조하십시오. 말하다? 그것은 열 - 주요 가정을 부인하는 것처럼 보이지 않는다. –

+0

@ xi.lin 그림 1-8은 변환이 행 주요로 해석되는 것을 보여줍니다. – idz

2

처음 해석이 정확했습니다. CATransform3D 아래의 매트릭스 정의 수행합니다

[ 1 0 0 0] 
[ 0 1 0 0] 
[ 0 0 1 0] 
[tx ty tz 1] 

Figure 1-8 in the "Core Animation Programming Guide"를 참조하십시오 (당신이 행렬을 변환 - 곱 사전을 사용하는 경우)이 혼동 될 수 있지만, 예

[m11 m12 m13 m14] 
[m21 m22 m23 m24] 
[m31 m32 m33 m34] 
[m41 m42 m43 m44] 

을 그리고,이 변환 행렬을 산출 . 당신이 후 곱셈 애플은 코어 애니메이션 (방정식이 작업을 트랜스없는 조심하지만, 같은 설명서의 그림 1-7 참조에 무엇 인 행렬을 변환하면이

유효한 변환 행렬이다).