Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

hgtransform

transform 객체 생성

구문

h = hgtransform
h = hgtransform('PropertyName',propertyvalue,...)
h = hgtransform(ax,...)

속성

속성 목록은 Transform 속성을 참조하십시오.

설명

h = hgtransformTransform 객체를 생성하고 이 객체의 핸들을 반환합니다.

h = hgtransform('PropertyName',propertyvalue,...)는 인수 목록에 지정된 속성값 설정으로 Transform 객체를 생성합니다. 속성에 대한 설명은 Transform 속성을 참조하십시오.

h = hgtransform(ax,...)는 현재 좌표축(gca) 대신에, ax로 지정된 좌표축에 Transform 객체를 생성합니다. 옵션 ax는 위에 열거된 구문의 입력 인수 조합보다 먼저 나올 수 있습니다.

Transform 객체는 다른 객체를 포함할 수 있습니다. 이렇게 하면 가시성, 크기, 방향 등에 대해 Transform과 그 자식 객체를 단일 엔터티로 취급할 수 있습니다. 단일 Transform 객체를 부모 객체로 지정하면(즉, 객체의 Parent 속성을 transform 객체의 핸들로 설정하면) 객체를 그룹화할 수 있습니다.

h = hgtransform;
surface('Parent',h,...)

Transform 객체를 부모 객체로 지정하는 주요 이점은 자식 객체에 대해 일제히 변환(예: 평행 이동, 스케일링, 회전 등)을 수행할 수 있다는 점입니다.

Transform 객체의 부모는 Axes 객체이거나 다른 Transform 객체입니다.

Transform 객체를 볼 수는 없지만, Visible 속성을 off로 설정하면 모든 자식 객체도 표시되지 않습니다.

예외 및 제한 사항

  • Transform 객체는 같은 좌표축에 속하는 임의의 수 axes의 자식 객체의 부모 객체가 될 수 있습니다(light 객체는 예외임).

  • Transform 객체는 결코 axes 객체의 부모 객체가 될 수 없으므로 단일 좌표축에서 파생된 객체만 포함할 수 있습니다.

  • Transform 객체는 동일한 좌표축 내의 다른 transform 객체에 대한 부모 객체가 될 수 있습니다.

  • 이미지는 진정한 3차원 객체가 아니기 때문에 Image 객체를 변환할 수 없습니다. 이미지 데이터를 곡면 CData로 매핑하는 텍스처를 통해 3차원 공간에서 이미지를 변환하는 효과를 생성할 수 있습니다.

  • text 객체가 데이터 단위(Data Unit)를 사용하지 않을 경우 변환은 text 객체에 영향을 미치지 않습니다. Text 객체의 위치가 데이터 단위로 지정되어 있으면 변환은 텍스트의 왼쪽 아래 코너를 이동시킵니다. 변환은 글꼴 크기나 방향에는 영향을 미치지 않습니다. 글꼴 크기나 방향을 변경하려면 text 속성을 사용하십시오.

참고

많은 플로팅 함수는 그래프를 그리기 전에 좌표축을 지웁니다(즉, axes의 자식을 제거합니다). 좌표축을 지우면 좌표축 내의 모든 Transform 객체도 삭제됩니다.

예제

모두 축소

이 예제에서는 동일한 transform 객체를 부모로 갖는 surface 객체 그룹을 사용해서 3차원 별을 생성하는 방법을 보여줍니다. 그런 다음 transform 객체는 크기를 스케일링하면서 z축 주위로 객체를 회전시킵니다.

좌표축을 생성하고 뷰를 조정합니다. 스케일링 도중 자동으로 제한이 선택되는 것을 방지하기 위해 좌표축 제한을 설정합니다.

ax = axes('XLim',[-1.5 1.5],'YLim',[-1.5 1.5],'ZLim',[-1.5 1.5]);
view(3)
grid on

transform 객체를 부모로 가질 객체를 생성합니다.

[x,y,z] = cylinder([.2 0]);
h(1) = surface(x,y,z,'FaceColor','red');
h(2) = surface(x,y,-z,'FaceColor','green');
h(3) = surface(z,x,y,'FaceColor','blue');
h(4) = surface(-z,x,y,'FaceColor','cyan');
h(5) = surface(y,z,x,'FaceColor','magenta');
h(6) = surface(y,-z,x,'FaceColor','yellow');

transform 객체를 생성하고 surface 객체의 부모 객체로 지정합니다. 회전 및 스케일링 행렬을 단위 행렬(eye)로 초기화합니다.

t = hgtransform('Parent',ax);
set(h,'Parent',t)

Rz = eye(4);
Sxy = Rz;

z 축 회전 행렬과 스케일링 행렬을 구성합니다. 그룹을 회전시키고 r의 증가값을 사용하여 스케일링을 실행합니다.

for r = 1:.1:2*pi
    % Z-axis rotation matrix
    Rz = makehgtform('zrotate',r);
    % Scaling matrix
    Sxy = makehgtform('scale',r/4);
    % Concatenate the transforms and
    % set the transform Matrix property
    set(t,'Matrix',Rz*Sxy)
    drawnow
end
pause(1)

단위 행렬(Identity Matrix)을 사용하여 원래 방향과 크기로 재설정합니다.

set(t,'Matrix',eye(4))

이 예제에서는 동일한 좌표축 내에서의 독립적 변환 방법을 보여주기 위해 두 개의 transform 객체를 생성합니다. 평행 이동 변환은 하나의 transform 객체를 원래 위치에서 멀어지도록 이동시킵니다.

두 transform 객체의 부모 객체가 될 axes 객체를 생성 및 설정합니다. 변환된 객체를 수용하기 위해 제한을 설정합니다.

ax = axes('XLim',[-3 1],'YLim',[-3 1],'ZLim',[-1 1]);
view(3)
grid on

그룹화할 곡면 객체를 생성합니다.

[x,y,z] = cylinder([.3 0]);
h(1) = surface(x,y,z,'FaceColor','red');
h(2) = surface(x,y,-z,'FaceColor','green');
h(3) = surface(z,x,y,'FaceColor','blue');
h(4) = surface(-z,x,y,'FaceColor','cyan');
h(5) = surface(y,z,x,'FaceColor','magenta');
h(6) = surface(y,-z,x,'FaceColor','yellow');

transform 객체를 생성하고 동일한 좌표축을 부모로 지정합니다. 그런 다음 transform t1을 곡면의 부모로 지정합니다. surface 객체를 복사한 다음 transform t2를 복사본의 부모로 지정합니다. 이 Figure는 변경되어서는 안 됩니다.

t1 = hgtransform('Parent',ax);
t2 = hgtransform('Parent',ax);

set(h,'Parent',t1)
h2 = copyobj(h,t2);

두 번째 transform 객체를 첫 번째 transform 객체에서 멀어지도록 평행 이동하고 결과를 표시합니다.

Txy = makehgtform('translate',[-1.5 -1.5 0]);
set(t2,'Matrix',Txy)
drawnow

두 transform 객체를 반대 방향으로 회전시킵니다.

10번 회전시키십시오(2pi 라디안 = 1회전).

for r = 1:.1:20*pi
    % Form z-axis rotation matrix
    Rz = makehgtform('zrotate',r);
    % Set transforms for both transform objects
    set(t1,'Matrix',Rz)
    set(t2,'Matrix',Txy*inv(Rz))
    drawnow
end

참고 항목

|

도움말 항목

R2006a 이전에 개발됨