치수 (2, 2)의 이미지 I을 가정합니다. 그래픽은 C 좌표를 주어로 :GPU에서 중심에 대한 이미지 회전
C = [[0, 0], [1, 0],
[0, 1], [1, 1]]
목적 : 중앙 (NOT 기원) 약 90도 내가 돌립니다.
변환 행렬 :
TRotate (90) = [0,1], [-1, 0]
(즉 ON (각 쌍의 록 스텝에서 변환 될 수 좌표 가정 GPU를))
방법 :.
- 전환 그래픽 좌표를 원점을 이미지의 중심으로하는 수학 좌표로 변환합니다.
- 변환 행렬을 적용하십시오.
- 그래픽 좌표로 변환하십시오.
예 :
그래픽 좌표 변환 :
TX '= TX - 폭/2
TY'= TY - 폭/2
C' =[[-1, -1], [0, -1],
[-1, 0], [0, 0]]
변환 행렬을 적용하십시오.
C" = [[-1, 1], [-1, -0],
[0, 1], [0, 0]]
다시 변환 : 나는 정말 '무게 중심'작업에 대한 적절한 회전을 얻기 위해 싸우고있어
C" = [[0, 2], [0, 1],
[1, 2], [1, 1]]
변환이 다시 범위를 벗어났습니다 ...
. 나는 수학 좌표로의 변환이 잘못되었다고 생각한다.
C' =[[-1, -1], [1, -1],
[-1, 1], [1, 1]]
내가 원점으로 상기 4 개 개의 화소 사이에 존재하는 경우가 + 아래쪽을 가리키는 Y 축 적이 있음을 관찰함으로써 이러한 변화를 달성 :
차라리 다음에 좌표 변환함으로써 더 운이 , 오른쪽에 + ve x 축이 있으면 나머지 (0,0)는 (-1, -1)이됩니다. 결과적인 회전과 변환은 원하는 결과를 제공합니다.
그러나 센터에 원점 배치 좌표에 적용하려면 올바른 종류의 변형을 찾을 수 없습니다. 동질적인 좌표를 사용하여 변형 행렬을 시도했지만 작동하지 않습니다.
편집 말콤의 대한 조언
다음 곱하여
[-1
-1
0]
회전 :
위치 벡터 =
[0
0
1]
폭/2 == 1을 감산함으로써 번역 변환 행렬 :
|-1| | 0 1 0| |-1|
|-1| X |-1 0 0| = | 1|
|0 | | 0 0 1| | 0|
안녕 Malcom. 위치 벡터에서 [x, y, w]가 w = 1 인 추가 행을 의미합니까? 그리고 변환 행렬에 대한 추가 열과 행을 의미합니까? – user1658296
당신은 당신의 점을 열 또는 행으로 생각할 수 있습니다. 그래서 그것을 [x y w]로 그리면 열이 있고, 그것을 수직으로 그리면 행이 있습니다. 행렬이 역행렬을 사용하는 한 (열이 행을 일치하거나 그 반대의 경우) 중요하지 않습니다. 그러나 행렬이 정사각형인지 쉽게 이해할 수 있습니다. –
감사합니다. Malcolm, 결과는 그래픽 좌표로 다시 변환하기가 어렵습니다. [-1, 1, 0]은 그래픽 좌표의 점 [0, 1]이어야합니다. – user1658296