페이지 요소 크기 및 위치 지정

이 가이드는 아핀 변환(affine transform)을 사용하여 페이지 요소의 크기 및 위치를 지정하는 방법에 대해 설명합니다. 아핀 변환에 대한 개념 소개는 변환 개념 가이드를 참조하세요.

요소 변환

Slides API를 사용하여 페이지에서 요소의 위치를 변경하거나 배율을 조정할 수 있습니다. 이렇게 하려면 적용할 변환 유형을 결정한 다음 하나 이상의 UpdatePageElementTransformRequest 요소를 포함하는 presentations.batchUpdate 메서드를 사용하여 해당 변환을 적용합니다.

변환은 다음 두 applyModes 중 하나로 수행할 수 있습니다.

  • ABSOLUTE 변환은 요소의 기존 변환 행렬을 바꿉니다. 변환 업데이트 요청에서 생략한 매개변수는 0으로 설정됩니다.

  • RELATIVE 변환은 요소의 기존 변환 행렬과 곱합니다(곱셈 순서가 중요함).

$$A' = BA$$

상대 변환(relative transform)은 페이지 요소를 현재 위치에서 이동하거나 배율을 조정합니다. 예를 들어, 도형을 왼쪽으로 100포인트 이동하거나 40도 회전합니다. 절대 변환(absolute transform)은 기존 위치 및 배율 정보를 버립니다. 예를 들어, 도형을 페이지 중앙으로 이동하거나 배율을 특정 너비로 조정합니다.

일반적으로 복잡한 변환을 간단한 변환의 시퀀스로 표현할 수 있습니다. 변환을 미리 계산(행렬 곱셈을 사용하여 복수의 변환을 조합)하면 일반적으로 오버헤드를 줄일 수 있습니다.

어떤 작업의 경우 요소의 기존 변환 매개변수가 무엇인지 알아야 합니다. 해당 값이 없는 경우 presentations.pages.get 요청을 사용하여 검색할 수 있습니다.

좌표이동

좌표이동(translation)은 페이지 요소를 동일한 페이지의 새 위치로 이동하는 작업입니다. 절대 좌표이동(absolute translation)은 요소를 특정 지점으로 이동하고, 상대 좌표이동(relative translation)은 요소를 특정 거리만큼 이동합니다.

기본적인 좌표이동 변환 행렬의 형식은 다음과 같습니다.

$$T=\begin{bmatrix} 1 & 0 & translate\_x\\ 0 & 1 & translate\_y\\ 0 & 0 & 1 \end{bmatrix}$$

UpdatePageElementTransformRequest를 사용하여 (크기, 기울기 또는 방향을 변경하지 않고) 요소를 좌표이동하는 경우 다음 AffineTransform 구조 중 하나를 사용할 수 있습니다.

// Absolute translation:
{
  'transform': {
    'scaleX':  current scaleX value,
    'scaleY':  current scaleY value,
    'shearX':  current shearX value,
    'shearY':  current shearY value,
    'translateX': X coordinate to move to,
    'translateY': Y coordinate to move to,
    'unit': 'EMU' // or 'PT'
  }
}

// Relative translation (scaling must also be provided to avoid a matrix multiplication error):
{
  'transform': {
    'scaleX':  1,
    'scaleY':  1,
    'translateX': X coordinate to move by,
    'translateY': Y coordinate to move by,
    'unit': 'EMU' // or 'PT'
  }
}

배율

배율은 X 및/또는 Y 차원을 따라 요소를 늘리거나 줄여 크기를 변경하는 작업입니다. 기본적인 배율 변환 행렬의 형식은 다음과 같습니다.

$$S=\begin{bmatrix} scale\_x & 1 & 0\\ 1 & scale\_y & 0\\ 0 & 0 & 1 \end{bmatrix}$$

이 행렬 형식을 RELATIVE 변환으로 직접 사용하여 요소의 크기를 변경할 수 있지만 그 경우 요소의 렌더링된 기울기 및 좌표이동에 영향을 미칠 수도 있습니다. 기울기 또는 좌표이동에 영향을 미치지 않고 요소의 배율을 조정하려면 참조 프레임으로 이동합니다.

회전

회전 변환은 배율 및 기울기 매개변수를 사용하여 한 지점에서 페이지 요소를 회전합니다. 기본적인 회전 변환 행렬의 형식은 다음과 같습니다. 여기서 회전 각도(라디안)는 X축에서 시계 반대 방향으로 이동하여 측정됩니다.

$$R=\begin{bmatrix} cos(\theta) & sin(\theta) & 0\\ -sin(\theta) & cos(\theta) & 0\\ 0 & 0 & 1 \end{bmatrix}$$

배율과 마찬가지로, 이 행렬 형식을 RELATIVE 변환으로 직접 사용하여 요소를 회전할 수 있지만 이 경우 요소가 페이지의 원점을 축으로 회전합니다. 요소를 중심점 또는 다른 지점을 축으로 회전하려면 참조 프레임으로 이동합니다.

반전

반전은 특정 선 또는 축을 기준으로 요소를 미러링합니다. 기본적인 x축 및 y축 반전 변환 행렬의 형식은 다음과 같습니다.

$$F_x=\begin{bmatrix} 1 & 0 & 0\\ 0 & -1 & 0\\ 0 & 0 & 1\\ \end{bmatrix}\qquad\qquad F_y=\begin{bmatrix} -1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1\\ \end{bmatrix}$$

배율과 마찬가지로, 이 행렬 형식을 RELATIVE 변환으로 직접 사용하여 요소를 반전할 수 있지만 이 경우 요소도 좌표이동합니다. 좌표이동 없이 요소를 반전하려면 참조 프레임으로 이동합니다.

요소 참조 프레임

기본적인 배율, 반전 또는 회전 변환을 페이지 요소에 직접 적용하면 페이지의 참조 프레임에서 변환이 발생합니다. 예를 들어, 기본적인 회전은 페이지의 원점(왼쪽 위)을 축으로 요소를 회전합니다. 그러나 가령 중심점을 축으로 요소를 회전하도록 요소 자체의 참조 프레임에서 작업할 수 있습니다.

자체 참조 프레임 내에서 요소를 변환하려면 요소 중심을 페이지 원점으로 이동하는 선행 좌표이동 T1과 요소를 원점으로 다시 이동하는 후행 좌표이동 T2 등 서로 다른 두 좌표이동 사이에 요소를 묶습니다. 전체 작업은 행렬 곱으로 표현할 수 있습니다.

$$A' = T2 \times B \times T1 \times A$$

또한 대신 다른 지점을 원점으로 좌표이동하여 다른 참조 프레임으로 전환할 수 있습니다. 해당 지점은 새 참조 프레임의 중심이 됩니다.

이러한 각 변환을 순차적 RELATIVE 변환 요청으로 개별적으로 수행할 수 있습니다. 행렬 곱셈을 사용하여 상기 A'를 미리 계산하고 그 결과를 단일 ABSOLUTE 변환으로 적용하는 것이 좋습니다. 또는 T2 * B * T1 곱을 미리 계산하여 단일 RELATIVE 변환으로 적용합니다. 이 둘은 API 작업 후 변환 요청 개별 전송이라는 관점에서 훨씬 효율적입니다.

Slides API가 값을 리팩터링할 수 있음

페이지 요소를 만들 때 특정 시각적인 결과를 제공하는 크기 및 변환을 지정할 수 있습니다. 그러나 API는 제공된 값을 동일한 시각적 모양을 산출하는 다른 값으로 바꿀 수 있습니다. 일반적으로 API를 사용하여 크기를 기록하는 경우 동일한 크기 반환이 보장되지 않습니다. 그러나 변환을 고려하는 경우 동일한 결과를 도출해야 합니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.