CG 2D Basics

2D 그래픽스 기초 (Basics of 2D Graphics)

픽셀과 해상도 (Pixels and Resolution)

소개 (Introduction)
픽셀은 컴퓨터 그래픽스의 가장 작은 단위로, 이미지를 구성하는 작은 점입니다. 해상도는 화면이나 이미지에서 가로와 세로 방향으로 얼마나 많은 픽셀이 존재하는지를 나타내는 값입니다.

개념 (Concept)

  • 픽셀 (Pixel): 픽셀은 “화소”라고도 하며, 이미지를 구성하는 기본 단위입니다. 각 픽셀은 특정한 색상 정보를 가지고 있습니다.
  • 해상도 (Resolution): 해상도는 이미지를 구성하는 픽셀 수로 측정됩니다. 일반적으로 가로 x 세로 형식으로 표시됩니다 (예: 1920×1080).

원리 (Principle)

  • DPI (Dots Per Inch): 출력 장치의 해상도를 나타내는 단위로, 인치당 점의 수를 의미합니다. 일반적으로 프린터에서 사용됩니다.
  • PPI (Pixels Per Inch): 화면 해상도를 나타내는 단위로, 인치당 픽셀의 수를 의미합니다. 모니터나 디스플레이 장치에서 사용됩니다.

예제 (Example)

  • 고해상도 이미지: 3840×2160 (4K 해상도)
  • 저해상도 이미지: 800×600

기본 도형 그리기 (선, 원, 다각형) (Drawing Basic Shapes: Lines, Circles, Polygons)

소개 (Introduction)
2D 그래픽스에서 기본 도형은 다양한 그래픽 요소를 만들기 위한 기초입니다. 선, 원, 다각형 등은 복잡한 그래픽을 구성하는 기본 요소입니다.

개념 (Concept)

  • 선 (Line): 두 점을 연결하는 도형.
  • 원 (Circle): 중심에서 일정한 거리(반지름) 내의 모든 점의 집합.
  • 다각형 (Polygon): 여러 개의 선분이 닫힌 형태로 이루어진 도형.

원리 (Principle)

  • 브레젠험의 알고리즘 (Bresenham’s Algorithm): 선을 그릴 때 가장 효율적인 알고리즘 중 하나입니다.
  • 중점 원 알고리즘 (Midpoint Circle Algorithm): 원을 그릴 때 사용되는 알고리즘으로, 픽셀 단위로 원을 그립니다.
  • 컨벡스 헐 (Convex Hull): 주어진 점 집합의 가장 외곽 점들로 이루어진 다각형.

함수들 (Functions)

  • Line(x1, y1, x2, y2): (x1, y1)에서 (x2, y2)까지 선을 그립니다.
  • Circle(x, y, radius): (x, y)를 중심으로 반지름이 radius인 원을 그립니다.
  • Polygon([(x1, y1), (x2, y2), (x3, y3), …]): 주어진 좌표를 연결하는 다각형을 그립니다.

예제 (Example)

import matplotlib.pyplot as plt

# 선 그리기
plt.plot([0, 1], [0, 1], 'k-')  # 검은색 선

# 원 그리기
circle = plt.Circle((0.5, 0.5), 0.2, color='blue', fill=False)
plt.gca().add_patch(circle)

# 다각형 그리기
polygon = plt.Polygon([[0.1, 0.1], [0.2, 0.3], [0.3, 0.1]], closed=True, fill=None, edgecolor='r')
plt.gca().add_patch(polygon)

plt.xlim(0, 1)
plt.ylim(0, 1)
plt.gca().set_aspect('equal', adjustable='box')
plt.show()

색상 모델 (RGB, CMYK, HSL) (Color Models: RGB, CMYK, HSL)

소개 (Introduction)
색상 모델은 컴퓨터 그래픽스에서 색상을 표현하고 조작하는 방법입니다. RGB, CMYK, HSL은 가장 많이 사용되는 색상 모델들입니다.

개념 (Concept)

  • RGB (Red, Green, Blue): 화면에서 색상을 표현할 때 사용되는 모델로, 각 색상의 강도를 0에서 255까지의 값으로 표현합니다.
  • CMYK (Cyan, Magenta, Yellow, Key/Black): 인쇄할 때 사용되는 색상 모델로, 각 색상의 비율을 0에서 100%로 표현합니다.
  • HSL (Hue, Saturation, Lightness): 색상(Hue), 채도(Saturation), 밝기(Lightness)로 색상을 표현하는 모델입니다.

원리 (Principle)

  • RGB: 가산혼합(additive mixing) 원리로, 색상이 합쳐지면 밝아집니다.
  • CMYK: 감산혼합(subtractive mixing) 원리로, 색상이 합쳐지면 어두워집니다.
  • HSL: 색상은 색상환을 기준으로, 채도는 색상의 순도를, 밝기는 명도를 나타냅니다.

예제 (Example)

# RGB 색상 예제
red = (255, 0, 0)
green = (0, 255, 0)
blue = (0, 0, 255)

# CMYK 색상 예제
cyan = (100, 0, 0, 0)
magenta = (0, 100, 0, 0)
yellow = (0, 0, 100, 0)

# HSL 색상 예제
hue = 120  # 초록색
saturation = 100  # 최대 채도
lightness = 50  # 중간 밝기

앤티앨리어싱 (Anti-Aliasing)

소개 (Introduction)
앤티앨리어싱은 컴퓨터 그래픽스에서 계단 현상(aliasing)을 줄이기 위해 사용하는 기술입니다.

개념 (Concept)

  • 앨리어싱 (Aliasing): 해상도가 낮을 때 선이나 가장자리에서 발생하는 계단 현상.
  • 앤티앨리어싱 (Anti-Aliasing): 앨리어싱을 줄이기 위해 픽셀의 색상을 부드럽게 조정하는 기술.

원리 (Principle)

  • 슈퍼샘플링 (Supersampling): 이미지 해상도를 높여서 렌더링한 후 다시 줄이는 방법.
  • 멀티샘플링 (Multisampling): 가장자리 픽셀에 여러 샘플을 적용하여 부드럽게 만드는 방법.
  • 필터링 (Filtering): 픽셀의 색상을 주변 픽셀과 혼합하여 부드러운 효과를 내는 방법.

예제 (Example)

import matplotlib.pyplot as plt

# 앤티앨리어싱이 없는 선
plt.plot([0, 1], [0, 1], 'k-', antialiased=False)

# 앤티앨리어싱이 있는 선
plt.plot([0, 1], [1, 0], 'k-', antialiased=True)

plt.xlim(0, 1)
plt.ylim(0, 1)
plt.gca().set_aspect('equal', adjustable='box')
plt.show()

각 주제는 컴퓨터 그래픽스의 기초를 이해하는 데 중요한 요소입니다. 이러한 기본 개념과 원리를 바탕으로 더 복잡한 그래픽 요소와 기술을 학습할 수 있습니다.

Posted in CG

Leave a Reply

Your email address will not be published. Required fields are marked *