Main Content

hgtransform으로 지원되는 변환

객체 변환

transform 객체의 Matrix 속성은 모든 객체의 자식에 변환을 일제히 적용합니다. 변환에는 회전, 평행 이동 및 스케일링이 포함됩니다. 4×4 변환 행렬로 변환을 정의합니다.

변환 행렬 생성

makehgtform 함수는 행렬 구성을 단순화하여 회전, 평행 이동 및 스케일링을 수행합니다. makehgtform을 사용하여 변환 행렬을 생성하는 방법에 대한 자세한 내용은 복합적인 이동을 위해 변환 중첩 항목을 참조하십시오.

회전

회전 변환은 오른손 법칙(Right-hand Rule)을 따릅니다. 즉, 원점을 향해 해당 축을 따라 바라보면서 x축, y축 또는 z축에 대해 객체를 회전하며, 양의 각은 시계 반대 방향으로 회전합니다. 회전 각이 세타일 때 다음 행렬은 x축에 대한 세타 회전을 정의합니다.

임의 축에 대해 회전하는 변환 행렬을 생성하려면 makehgtform 함수를 사용합니다.

평행 이동

평행 이동 변환은 현재 위치를 기준으로 객체를 이동합니다. 데이터 공간 단위의 거리 tx, tytz로 평행 이동을 지정합니다. 다음 행렬은 변환 행렬 내의 이러한 요소의 위치를 보여줍니다.

스케일링

스케일링 변환은 객체의 크기를 변경합니다. 스케일링 인자 sx, sysz를 지정하고 다음 행렬을 생성합니다.

0 이하인 스케일링 인자는 사용할 수 없습니다.

디폴트 변환

디폴트 변환은 eye 함수를 사용하여 생성할 수 있는 단위 행렬입니다. 단위 행렬은 다음과 같습니다.

변환 작업 실행 취소를 참조하십시오.

허용되지 않는 변환: 원근

원근 변환은 객체를 보는 거리를 변경합니다. 다음 행렬은 MATLAB® 그래픽스에서 허용되지 않는 원근 변환 행렬의 예입니다.

[10000100001000px0]

이 경우, px가 원근 인수입니다.

허용되지 않는 변환: 전단(Shear)

전단 변환(Shear Transform)은 주어진 선(또는 3차원 좌표의 경우 평면) 위의 모든 점을 고정된 상태로 유지하면서, 다른 모든 점을 그 선(평면)으로부터의 수직 거리에 비례해 선(평면)과 평행하게 이동합니다. 다음 행렬은 hgtransform에서 허용되지 않는 전단 변환 행렬의 예입니다.

[1sx00010000100001]

이 경우, sx가 전단 인자이며 단위 행렬의 0 요소를 대체할 수 있습니다.

절대 변환 및 상대 변환

변환은 현재 변환에 대비해 상대적이 아니라 절대적으로 지정됩니다. 예를 들어, transform 객체를 x 방향으로 5단위 평행 이동하는 변환을 적용한 후 y 방향으로 4단위 평행 이동하는 변환을 적용할 경우, 결과로 나타나는 객체는 원래 위치에서 y 방향으로 4단위 떨어진 위치에 배치됩니다.

변환을 누적해서 적용하려면 개별 변환을 단일 행렬로 결합해야 합니다. 여러 변환을 하나의 행렬로 결합를 참조하십시오.

여러 변환을 하나의 행렬로 결합

개별 행렬을 결합(곱하기)하고 Matrix 속성을 결과로 설정하면 일반적으로 더 효율적으로 여러 변환 작업을 하나의 행렬로 결합할 수 있습니다. 행렬 곱셈은 가환적이지 않으므로 행렬을 곱하는 순서에 따라 결과가 달라집니다.

예를 들어, 스케일링하고 평행 이동한 후 회전하는 작업을 수행하고자 한다고 가정하겠습니다. R, TS를 개별 변환 행렬이라 가정하고 이들 행렬을 다음과 같이 곱합니다.

C = R*T*S % operations are performed from right to left

S는 스케일링 행렬이고, T는 평행 이동 행렬이고, R은 회전 행렬이며 C는 이 세 작업을 결합한 복합 행렬입니다. 그런 후, 다음과 같이 transform 객체의 Matrix 속성을 C로 변환합니다.

hg = hgtransform('Matrix',C);

변환에 단위 행렬 곱하기

다음 명령문 집합은 동일하지 않습니다. 첫 번째 집합:

hg.Matrix = C;
hg.Matrix = eye(4);

이에 대한 결과로는 변환 C가 제거됩니다. 두 번째 집합:

I = eye(4);
C = I*R*T*S;
hg.Matrix = C;

여기서는 변환 C가 적용됩니다. 단위 행렬을 다른 행렬에 결합(Concatenate)해도 복합 행렬에는 아무런 영향이 없습니다.

변환 작업 실행 취소

변환 작업은 절대적으로(현재 변환에 대해 상대적이지 않음) 지정되기 때문에 현재 변환을 단위 행렬로 설정하여 일련의 변환을 실행 취소할 수 있습니다. 예를 들어, 다음은

hg = hgtransform('Matrix',C);
...
hg.Matrix = eye(4);

transform 객체 hg에 포함된 객체를 변환 C를 적용하기 전의 원래 방향으로 되돌립니다.

단위 행렬에 대한 자세한 내용은 eye 함수를 참조하십시오.

참고 항목

| |

관련 항목