2차원 컴퓨터 그래픽스

**2차원 컴퓨터 그래픽스**(2D computer graphics)는 디지털 이미지를 컴퓨터 기반으로 생성하는 것으로, 주로 2차원 모델(예: 2차원 기하 모델, 텍스트, 디지털 이미지)과 그에 특화된 기술을 사용한다. 이는 이러한 기술을 포함하는 컴퓨터 과학의 한 분야를 지칭하거나 모델 자체를 지칭할 수 있다.

[섬네일|[래스터 그래픽스|래스터 그래픽 스프라이트 (왼쪽) 및 마스크]]
2차원 컴퓨터 그래픽스는 주로 전통적인 인쇄 및 소묘 기술을 기반으로 개발된 응용 프로그램(예: 타이포그래피, 지도학, 기술 도면, 광고 등)에 사용된다. 이러한 응용 프로그램에서 2차원 영상은 실제 개체의 단순한 표현이 아니라 추가적인 의미적 가치를 가진 독립적인 아티팩트이다. 따라서 2차원 모델은 3차원 컴퓨터 그래픽스 (사진에 가까운 접근 방식)보다 이미지에 대한 직접적인 제어를 제공하기 때문에 선호된다.

탁상출판, 공학, 사업과 같은 많은 영역에서 2차원 컴퓨터 그래픽스 기술을 기반으로 한 문서 설명은 해당 디지털 이미지보다 훨씬 작을 수 있으며, 종종 1/1000 이상 작을 수 있다. 이 표현은 또한 다양한 출력 장치에 맞게 다른 해상도로 렌더링될 수 있으므로 더 유연하다. 이러한 이유로 문서 및 삽화는 종종 2차원 그래픽 파일로 저장되거나 전송된다.

2차원 컴퓨터 그래픽스는 1950년대에 벡터 그래픽스 장치를 기반으로 시작되었다. 이들은 다음 수십 년 동안 래스터 기반 장치에 의해 대부분 대체되었다. 포스트스크립트 언어와 X 윈도 시스템 프로토콜은 이 분야에서 중요한 발전을 이루었다.

2차원 그래픽 모델은 기하 모델 (또한 벡터 그래픽스라고도 함), 디지털 이미지 (또한 래스터 그래픽스라고도 함), 조판될 텍스트 (내용, 글꼴 스타일 및 크기, 색상, 위치 및 방향으로 정의됨), 수학적 함수 및 방정식 등을 결합할 수 있다. 이러한 구성 요소는 평행 이동, 회전, 스케일링과 같은 2차원 기하 변환에 의해 수정되고 조작될 수 있다.
객체 지향 그래픽스에서 이미지는 자율적으로 렌더링하는 메서드를 가진 객체에 의해 간접적으로 설명된다. 이 메서드는 임의의 알고리즘에 의해 이미지 픽셀에 색상을 할당하는 절차이다. 객체 지향 프로그래밍의 패러다임에서 더 간단한 객체를 결합하여 복잡한 모델을 만들 수 있다.

## 배경 (기하학)
right|섬네일|평행 이동은 도형이나 공간의 모든 점을 주어진 방향으로 동일한 양만큼 이동시킨다.

유클리드 기하학에서 평행 이동은 모든 점을 지정된 방향으로 일정한 거리만큼 이동시킨다. 평행 이동은 강체 운동으로 설명될 수 있다. 다른 강체 운동에는 회전 및 반사가 포함된다. 평행 이동은 또한 모든 점에 일정한 벡터를 더하거나 좌표계의 원점을 이동하는 것으로 해석될 수 있다. 평행 이동 연산자는 T_\mathbf{\delta}와 같은 연산자로, T_\mathbf{\delta} f(\mathbf{v}) = f(\mathbf{v}+\mathbf{\delta}).이다.

**v**가 고정된 벡터이면, 평행 이동 T**v**는 T**v**(**p**) = **p** + **v**와 같이 작동한다.

T가 평행 이동이면, 함수 T에 따른 부분집합 A의 상은 T에 의한 A의 **평행 이동**이다. T**v**에 의한 A의 평행 이동은 종종 A + **v**로 쓰여진다.

유클리드 공간에서 모든 평행 이동은 등거리 사상이다. 모든 평행 이동의 집합은 평행 이동 군 T를 형성하는데, 이는 공간 자체와 동형이며 유클리드 군 E(n)의 정규 부분군이다. E(n)을 T로 나눈 몫군은 직교군 O(n)과 동형이다.
:E(n) / T ≅ O(n).

### 평행 이동

평행 이동은 아핀 변환이지만 선형 변환이 아니므로, 일반적으로 동차좌표를 사용하여 평행 이동 연산자를 행렬로 표현하여 선형으로 만든다. 따라서 3차원 벡터 **w** = (wx, wy, wz)를 4개의 동차좌표로 **w** = (wx, wy, wz, 1)로 쓴다.

객체를 벡터 **v**로 평행 이동하려면, 각 동차 벡터 **p** (동차좌표로 작성됨)에 다음 **평행 이동 행렬**을 곱해야 한다.

:  T_{\mathbf{v}} =
\begin{bmatrix}
1 & 0 & 0 & v_x \\
0 & 1 & 0 & v_y \\
0 & 0 & 1 & v_z \\
0 & 0 & 0 & 1
\end{bmatrix}

아래에 표시된 것처럼 곱셈은 예상되는 결과를 제공한다.
:  T_{\mathbf{v}} \mathbf{p} =
\begin{bmatrix}
1 & 0 & 0 & v_x \\
0 & 1 & 0 & v_y\\
0 & 0 & 1 & v_z\\
0 & 0 & 0 & 1
\end{bmatrix}
\begin{bmatrix}
p_x \\ p_y \\ p_z \\ 1
\end{bmatrix}
=
\begin{bmatrix}
p_x + v_x \\ p_y + v_y \\ p_z + v_z \\ 1
\end{bmatrix}
= \mathbf{p} + \mathbf{v} 

평행 이동 행렬의 역행렬은 벡터의 방향을 반대로 함으로써 얻을 수 있다.
:  T^{-1}_{\mathbf{v}} = T_{-\mathbf{v}} . \! 

마찬가지로, 평행 이동 행렬의 곱은 벡터를 더함으로써 주어진다.
:  T_{\mathbf{u}}T_{\mathbf{v}} = T_{\mathbf{u}+\mathbf{v}} . \! 
벡터의 덧셈은 교환적이므로 평행 이동 행렬의 곱셈도 교환적이다 (임의의 행렬 곱셈과 다름).

### 회전

선형대수학에서 회전변환행렬은 유클리드 공간에서 회전을 수행하는 데 사용되는 행렬이다.

:R =
\begin{bmatrix}
\cos \theta & -\sin \theta \\
\sin \theta & \cos \theta \\
\end{bmatrix}


는 xy-데카르트 좌표계 평면에서 데카르트 좌표계의 원점을 중심으로 각도 θ만큼 반시계 방향으로 점들을 회전시킨다. 회전 행렬 R을 사용하여 회전을 수행하려면 각 점의 위치를 점의 좌표를 포함하는 열 벡터 **v**로 표현해야 한다. 회전된 벡터는 행렬 곱셈 R**v**를 사용하여 얻어진다. 행렬 곱셈은 영 벡터 (즉, 원점의 좌표)에 영향을 미치지 않으므로 회전 행렬은 좌표계의 원점을 중심으로 하는 회전을 설명하는 데만 사용할 수 있다.

회전 행렬은 이러한 회전에 대한 간단한 대수적 설명을 제공하며 기하학, 물리학, 컴퓨터 그래픽스에서의 계산에 광범위하게 사용된다. 2차원 공간에서 회전은 단순히 각도 θ로 설명될 수 있지만, 2행 2열의 회전 행렬의 4개 항목으로도 표현될 수 있다. 3차원 공간에서 모든 회전은 단일 고정 회전 축을 중심으로 주어진 각도만큼의 회전으로 해석될 수 있으며 (오일러의 회전 정리 참조), 따라서 3개 항목을 가진 각도와 벡터로 간단히 설명될 수 있다. 그러나 3행 3열의 회전 행렬의 9개 항목으로도 표현될 수 있다. 회전 개념은 3차원보다 높은 차원에서는 일반적으로 사용되지 않는다. 회전 변위 개념이 있으며 이는 행렬로 표현될 수 있지만 관련 단일 축이나 각도는 없다.

회전 행렬은 정방 행렬이며 실수 항목을 가진다. 더 구체적으로는 행렬식이 1인 직교 행렬로 특징지어질 수 있다.

:R^{T} = R^{-1}, \det R = 1\,.

크기 n의 모든 이러한 행렬의 집합은 군을 형성하며, 특수 직교군 으로 알려져 있다.

### 2차원 회전
섬네일|벡터가 x축에 정렬된 상태에서 각도 θ만큼 반시계 방향으로 회전.
2차원에서 모든 회전 행렬은 다음 형식을 갖는다.

:
R(\theta) = \begin{bmatrix}
\cos \theta & -\sin \theta \\
\sin \theta & \cos \theta \\
\end{bmatrix}.

이것은 다음 행렬 곱셈을 통해 열 벡터를 회전시킨다.

:
\begin{bmatrix}
x' \\
y' \\
\end{bmatrix} = \begin{bmatrix}
\cos \theta & -\sin \theta \\
\sin \theta & \cos \theta \\
\end{bmatrix}\begin{bmatrix}
x \\
y \\
\end{bmatrix}.

따라서 회전 후 점 (x,y)의 좌표 (x',y')는 다음과 같다.

:x' = x \cos \theta - y \sin \theta\,,
:y' = x \sin \theta + y \cos \theta\,.

θ가 양수(예: 90°)이면 벡터 회전 방향은 반시계 방향이고, θ가 음수(예: -90°)이면 시계 방향이다.

:
R(-\theta) = \begin{bmatrix}
\cos \theta & \sin \theta \\
-\sin \theta & \cos \theta \\
\end{bmatrix}\,.

### 비표준 좌표계 방향
섬네일|비표준 축을 사용하여 각도 θ만큼 회전
표준 오른손 데카르트 좌표계를 사용하고 x축은 오른쪽, y축은 위쪽으로 향하면 회전 R(θ)은 반시계 방향이다. 왼손 데카르트 좌표계를 사용하고 x축은 오른쪽으로 향하지만 y축은 아래쪽으로 향하면 R(θ)은 시계 방향이다. 이러한 비표준 방향은 수학에서는 거의 사용되지 않지만 2차원 컴퓨터 그래픽스에서는 흔히 사용된다. 2차원 컴퓨터 그래픽스에서는 원점이 종종 왼쪽 상단 모서리에 있고 y축이 화면이나 페이지 아래쪽으로 향한다.

회전변환행렬에 의해 생성되는 회전의 의미를 변경할 수 있는 다른 대체 규칙에 대해서는 아래를 참조하라.

### 일반적인 회전

특히 유용한 행렬은 90° 및 180° 회전용이다.
:
R(90^\circ) = \begin{bmatrix}
0 & -1 \\[3pt]
1 & 0 \\
\end{bmatrix} (90° 반시계 방향 회전)
:R(180^\circ) = \begin{bmatrix}
-1 & 0 \\[3pt]
0 & -1 \\
\end{bmatrix} (어느 방향으로든 180° 회전 – 반 바퀴)
:R(270^\circ) = \begin{bmatrix}
0 & 1 \\[3pt]
-1 & 0 \\
\end{bmatrix} (270° 반시계 방향 회전, 90° 시계 방향 회전과 동일)

### 스케일링
유클리드 기하학에서 **균일 스케일링** (**[[등방성]] 스케일링**, **동차 확산**, 상사)은 모든 방향에서 동일한 스케일 팩터로 객체를 확대 (증가) 또는 축소 (감소)하는 선형 변환이다. 균일 스케일링의 결과는 원본과 닮았다 (기하학적 의미에서). 스케일 팩터 1은 일반적으로 허용되므로 합동인 도형도 닮음으로 분류된다. (일부 학교 교과서는 이 가능성을 명시적으로 배제하며, 어떤 교과서는 정사각형을 직사각형으로, 원을 타원으로 분류하지 않는 것과 같다.)

더 일반적인 것은 각 축 방향에 대해 별도의 스케일 팩터를 사용하는 **스케일링**이다. **비균일 스케일링** (**[[비등방성]] 스케일링**, **비동차 확산**)은 스케일 팩터 중 적어도 하나가 다른 것들과 다를 때 얻어진다. 특수한 경우는 **방향 스케일링** 또는 **스트레칭** (한 방향으로)이다. 비균일 스케일링은 객체의 모양을 변경한다. 예를 들어 정사각형이 직사각형으로 변하거나, 정사각형의 변이 스케일링 축과 평행하지 않으면 평행사변형으로 변할 수 있다 (축과 평행한 선 사이의 각도는 보존되지만 모든 각도가 보존되는 것은 아니다).

스케일링은 스케일링 행렬로 표현될 수 있다. 객체를 벡터 v = (vx, vy, vz)로 스케일링하려면 각 점 p = (px, py, pz)에 이 스케일링 행렬을 곱해야 한다.
: S_v =
\begin{bmatrix}
v_x & 0 & 0  \\
0 & v_y & 0  \\
0 & 0 & v_z  \\
\end{bmatrix}.


아래에 표시된 것처럼 곱셈은 예상되는 결과를 제공한다.
:
S_vp =
\begin{bmatrix}
v_x & 0 & 0  \\
0 & v_y & 0  \\
0 & 0 & v_z  \\
\end{bmatrix}
\begin{bmatrix}
p_x \\ p_y \\ p_z
\end{bmatrix}
=
\begin{bmatrix}
v_xp_x \\ v_yp_y \\ v_zp_z
\end{bmatrix}.


이러한 스케일링은 객체의 지름을 스케일 팩터 사이의 비율로, 넓이를 두 스케일 팩터의 가장 작은 곱과 가장 큰 곱 사이의 비율로, 부피를 세 스케일 팩터의 곱으로 변경한다.

스케일링은 스케일 팩터가 같을 때에만 균일하다 (vx = vy = vz). 스케일 팩터 중 하나를 제외한 모든 것이 1과 같으면 방향 스케일링이 된다.

vx = vy = vz = k인 경우, 스케일링은 계수 k에 의한 **확대** 또는 **[[확장 (거리 공간)|확장]]**이라고도 불리며, 넓이를 k2배, 부피를 k3배 증가시킨다.

가장 일반적인 의미의 스케일링은 대각화 가능 행렬을 가진 모든 아핀 변환이다. 여기에는 세 스케일링 방향이 수직이 아닌 경우, 하나 이상의 스케일 팩터가 0인 경우 (사영), 그리고 하나 이상의 음수 스케일 팩터인 경우가 포함된다. 후자는 적절한 스케일링과 일종의 반사의 조합에 해당한다. 특정 방향의 선을 따라 평면에 수직일 필요가 없는 교차점에서 반사를 취한다. 따라서 이는 일반적인 평면에서의 반사보다 더 일반적이다.

### 동차좌표 사용
컴퓨터 그래픽스에서 흔히 사용되는 사영기하학에서 점은 동차좌표를 사용하여 표현된다. 객체를 벡터 v = (vx, vy, vz)로 스케일링하려면 각 동차 좌표 벡터 p = (px, py, pz, 1)에 이 사영 변환 행렬을 곱해야 한다.

: S_v =
\begin{bmatrix}
v_x & 0 & 0 & 0 \\
0 & v_y & 0 & 0 \\
0 & 0 & v_z & 0 \\
0 & 0 & 0 & 1
\end{bmatrix}.


아래에 표시된 것처럼 곱셈은 예상되는 결과를 제공한다.
:
S_vp =
\begin{bmatrix}
v_x & 0 & 0 & 0 \\
0 & v_y & 0 & 0 \\
0 & 0 & v_z & 0 \\
0 & 0 & 0 & 1
\end{bmatrix}
\begin{bmatrix}
p_x \\ p_y \\ p_z \\ 1
\end{bmatrix}
=
\begin{bmatrix}
v_xp_x \\ v_yp_y \\ v_zp_z \\ 1
\end{bmatrix}.


동차 좌표의 마지막 구성 요소는 다른 세 구성 요소의 분모로 간주될 수 있으므로, 공통 인수 s(균일 스케일링)에 의한 균일 스케일링은 이 스케일링 행렬을 사용하여 수행할 수 있다.
: S_v =
\begin{bmatrix}
1 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 1 & 0 \\
0 & 0 & 0 & \frac{1}{s}
\end{bmatrix}.


각 벡터 p = (px, py, pz, 1)에 대해 다음을 얻는다.
:
S_vp =
\begin{bmatrix}
1 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 1 & 0 \\
0 & 0 & 0 & \frac{1}{s}
\end{bmatrix}
\begin{bmatrix}
p_x \\ p_y \\ p_z \\ 1
\end{bmatrix}
=
\begin{bmatrix}
p_x \\ p_y \\ p_z \\ \frac{1}{s}
\end{bmatrix}

이는 다음과 같이 동차화된다.
:
\begin{bmatrix}
sp_x \\ sp_y \\ sp_z \\ 1
\end{bmatrix}.


## 기술

### 직접 그리기
복잡한 이미지를 만드는 편리한 방법은 비어 있는 "캔버스" 래스터 맵 (비트맵이라고도 불리는 픽셀 배열)을 균일한 배경색으로 채운 다음 적절한 순서로 간단한 색상 패치를 "그리거나", "칠하거나", "붙여넣는" 것이다. 특히 캔버스는 컴퓨터 디스플레이의 프레임 버퍼일 수 있다.

일부 프로그램은 픽셀 색상을 직접 설정하지만, 대부분은 일부 2차원 그래픽스 라이브러리나 기기의 그래픽 카드에 의존하며, 이는 일반적으로 다음 작업을 구현한다.

* 지정된 오프셋에 주어진 이미지를 캔버스에 붙여넣는다.
* 지정된 글꼴로, 주어진 위치와 각도에 문자열을 쓴다.
* 세 모서리로 정의된 삼각형이나 주어진 중심과 반지름을 가진 원과 같은 간단한 도형을 칠한다.
* 주어진 폭의 가상 펜으로 선분, 호 또는 간단한 곡선을 그린다.

#### 확장된 색상 모델
텍스트, 모양 및 선은 클라이언트가 지정한 색상으로 렌더링된다. 많은 라이브러리와 카드는 색상 그레이디언트를 제공하는데, 이는 부드럽게 변화하는 배경, 그림자 효과 등을 생성하는 데 유용하다. (또한 구로 셰이딩 참조). 픽셀 색상은 텍스처, 예를 들어 디지털 이미지에서 가져올 수도 있다 (따라서 문질러 사용하는 스크린톤과 만화에서만 사용할 수 있었던 전설적인 바둑판 무늬 페인트를 모방한다).

특정 색상으로 픽셀을 칠하는 것은 일반적으로 이전 색상을 대체한다. 그러나 많은 시스템은 투명 및 반투명 색상으로 칠하는 것을 지원하며, 이는 이전 픽셀 값만 수정한다.

두 색상은 더 복잡한 방식으로 결합될 수도 있는데, 예를 들어 비트 단위 배타적 논리합을 계산하는 식이다. 이 기술은 색상 반전 또는 색상 역전이라고 알려져 있으며, 강조 표시, 고무줄 그리기, 기타 일시적인 그리기와 같은 그래픽 사용자 인터페이스에서 자주 사용된다. 이는 동일한 모양을 동일한 색상으로 다시 그리면 원래 픽셀 값이 복원되기 때문이다. 

#### 레이어
[섬네일|[합성 (컴퓨터 그래픽스)|합성된 3차원 배경과 2차원 애니메이션 캐릭터 (레이어 사용)]]

2차원 컴퓨터 그래픽스에서 사용되는 모델은 일반적으로 3차원 모양이나 조명, 그림자, 반사, 굴절 등과 같은 3차원 광학 현상을 제공하지 않는다. 그러나 개념적으로 잉크, 종이 또는 필름으로 구성된 여러 레이어를 모델링할 수 있으며, 이들은 불투명하거나 반투명하거나 투명하여 특정 순서로 쌓인다. 순서는 일반적으로 단일 숫자(레이어의 깊이 또는 뷰어로부터의 거리)로 정의된다.

레이어 모델은 때때로 "2-D 컴퓨터 그래픽스"라고 불린다. 이들은 필름과 종이를 기반으로 한 전통적인 제도 및 인쇄 기술(예: 자르고 붙이기)을 모방할 수 있게 하며, 사용자가 다른 레이어에 영향을 미치지 않고 어떤 레이어든 편집할 수 있게 한다. 이러한 이유로 대부분의 그래픽스 편집기에서 사용된다. 레이어 모델은 또한 복잡한 그림의 더 나은 공간 안티에일리어싱을 허용하고, 마이터 조인트 및 짝홀 규칙과 같은 특정 기술에 대한 견고한 모델을 제공한다.

레이어 모델은 또한 사용자가 문서를 보거나 인쇄할 때 원치 않는 정보를 억제할 수 있도록 사용된다. 예를 들어, 지도에서 도로 또는 철도, 집적 회로 다이어그램에서 특정 공정 레이어, 또는 업무 서신에서 손으로 쓴 주석 등을 숨길 수 있다.

레이어 기반 모델에서는 대상 이미지가 각 레이어를 깊이가 감소하는 순서로 가상 캔버스에 "칠하거나" "붙여넣는" 방식으로 생성된다. 개념적으로 각 레이어는 먼저 자체적으로 렌더링되어 원하는 해상도의 디지털 이미지를 생성하고, 이 이미지는 픽셀별로 캔버스에 칠해진다. 물론 레이어의 완전 투명 부분은 렌더링할 필요가 없다. 렌더링과 칠하기는 병렬로 수행될 수 있다. 즉, 각 레이어 픽셀은 렌더링 절차에 의해 생성되는 즉시 캔버스에 칠해질 수 있다.

복잡한 기하학적 객체(예: 텍스트 또는 폴리라인)로 구성된 레이어는 더 간단한 요소(문자 또는 선분)로 분해될 수 있으며, 이 요소들은 특정 순서로 별도의 레이어로 칠해진다. 그러나 이 해결책은 두 요소가 동일한 픽셀을 겹칠 때 바람직하지 않은 에일리어싱 아티팩트를 생성할 수 있다.

## 하드웨어

현대의 컴퓨터 그래픽 카드 디스플레이는 거의 압도적으로 래스터 기술을 사용하며, 화면을 직사각형 픽셀 격자로 나눈다. 이는 벡터 그래픽스 하드웨어에 비해 래스터 기반 비디오 하드웨어의 비용이 상대적으로 저렴하기 때문이다. 대부분의 그래픽 하드웨어는 블리팅 작업 또는 스프라이트 그리기에 대한 내부 지원을 제공한다. 블리팅 전용 보조 프로세서는 블리터 칩으로 알려져 있다.

1970년대 후반부터 1980년대까지 8비트에서 초기 16비트 아케이드 게임, 비디오 게임 콘솔, 가정용 컴퓨터에 사용된 고전적인 2차원 그래픽 칩 및 그래픽 처리 장치는 다음과 같다.

* 아타리의 TIA, ANTIC, CTIA and GTIA
* 캡콤의 CPS-A 및 CPS-B
* 코모도어의 OCS
* MOS Technology의 VIC 및 VIC-II
* 허드슨 소프트의 Cynthia 및 HuC6270
* NEC의 μPD7220 및 μPD72120
* 리코의 PPU 및 S-PPU
* 세가의 VDP, Super Scaler, 315-5011/315-5012 및 315-5196/315-5197
* 텍사스 인스트루먼트의 TMS9918
* 야마하의 V9938, V9958 및 YM7101 VDP

## 소프트웨어
MacOS, 마이크로소프트 윈도우, X 윈도 시스템을 포함한 많은 그래픽 사용자 인터페이스 (GUI)는 주로 2차원 그래픽 개념을 기반으로 한다. 이러한 소프트웨어는 컴퓨터와 상호 작용하기 위한 시각적 환경을 제공하며, 일반적으로 사용자가 다른 응용 프로그램을 개념적으로 구별하는 데 도움이 되는 창 관리자의 형태를 포함한다.
개별 소프트웨어 응용 프로그램 내의 사용자 인터페이스도 일반적으로 2차원적인데, 이는 마우스와 같은 가장 일반적인 입력 장치가 두 가지 이동 차원에 국한되기 때문이기도 하다.

2차원 그래픽스는 프린터, 플로터, 시트 절단기 등과 같은 제어 주변 장치에서 매우 중요하다. 또한 대부분의 초기 비디오 게임에서 사용되었으며, 솔리테어, 체스, 마작 등과 같은 카드 및 보드 게임에서도 여전히 사용된다.

2차원 그래픽스 편집기 또는 드로잉 프로그램은 2차원 컴퓨터 그래픽스 프리미티브를 직접 조작(마우스, 그래픽 태블릿 또는 유사 장치를 통해)하여 이미지, 다이어그램 및 삽화를 생성하는 응용 프로그램 수준 소프트웨어이다. 이러한 편집기는 일반적으로 기하 프리미티브와 디지털 이미지를 제공하며, 일부는 절차 모델도 지원한다. 삽화는 일반적으로 편집을 더 편리하게 만들기 위해 계층적 구조를 가진 레이어드 모델로 내부적으로 표현된다. 이러한 편집기는 일반적으로 레이어와 프리미티브가 원래 형태로 개별적으로 보존되는 그래픽 파일을 출력한다. 1984년 매킨토시 컴퓨터 라인과 함께 출시된 맥드로는 이 부류의 초기 예시였다. 최근 예시로는 상용 제품인 어도비 일러스트레이터 및 코렐드로, 그리고 Xfig 또는 잉크스케이프와 같은 무료 편집기가 있다. 전기, 전자 및 VLSI 다이어그램, 지형도, 컴퓨터 글꼴 등 특정 유형의 도면에 특화된 많은 2차원 그래픽스 편집기도 있다.

이미지 편집기는 주로 자유로운 그리기/페인팅 및 신호 처리 작업을 통해 디지털 이미지를 조작하는 데 특화되어 있다. 이들은 일반적으로 사용자가 가상 펜, 브러시 및 기타 자유로운 예술 도구를 제어하여 가상 캔버스에 그림을 그리는 직접 그리기 패러다임을 사용한다. 일부 이미지 편집기는 다중 레이어 모델을 지원하지만, 블러링과 같은 신호 처리 작업을 지원하기 위해 각 레이어는 일반적으로 디지털 이미지로 표현된다. 따라서 편집기에서 제공하는 모든 기하학적 프리미티브는 즉시 픽셀로 변환되어 캔버스에 그려진다. 래스터 그래픽스 편집기라는 이름은 벡터 그래픽스도 처리하는 일반 편집기와 대조하기 위해 때때로 사용된다. 최초의 인기 있는 이미지 편집기 중 하나는 애플의 맥페인트였으며, 이는 맥드로의 동반자였다. 현대적인 예시로는 무료 김프 편집기와 상업용 제품인 포토샵 및 페인트 샵 프로가 있다. 이 부류에는 의학, 원격 감지, 디지털 사진 등에 특화된 많은 편집기도 포함된다.

## 개발 애니메이션
2차원 애니메이션의 부활과 함께 아마추어 및 전문 애니메이터를 위한 무료 및 독점 소프트웨어 패키지가 널리 사용 가능하게 되었다. RETAS 유비아트 프레임워크(UbiArt Framework) 및 어도비 애프터 이펙트와 같은 소프트웨어를 사용하면 채색 및 합성을 더 짧은 시간에 수행할 수 있다.

디지털 2차원 애니메이션 프로세스를 지원하고 속도를 높이기 위한 다양한 접근 방식이 개발되었다. 예를 들어, 어도비 플래시와 같은 도구에서 벡터 아트워크를 생성함으로써 아티스트는 소프트웨어 기반 자동 채색 및 트위닝을 활용할 수 있다.

블렌더 또는 어도비 서브스탠스(Adobe Substance)와 같은 프로그램은 사용자에게 3차원 애니메이션, 2차원 애니메이션 또는 둘 모두를 소프트웨어에서 결합할 수 있도록 하여 다양한 형태의 애니메이션을 실험할 수 있게 한다.

## 같이 보기

* 2.5차원
* 3차원 컴퓨터 그래픽스
* 컴퓨터 애니메이션
* CGI
* 비트 블릿
* 컴퓨터 그래픽스
* 그래픽 소프트웨어
* 그래픽
* 이미지 스케일링
* 터틀 그래픽스
* 그래픽에서의 투명도
* 팔레트 (컴퓨팅)
* 시차 스크롤링
* 픽셀 아트

## 각주

분류:컴퓨터 그래픽스
분류:유클리드 평면기하학