컴퓨터 그래픽스 시스템

그래픽 하드웨어

  • 프로세서: CPU와 Graphic Accelerator
  • 메모리: 시스템 메모리와 프레임 버퍼
  • 출력장치
  • 입력장치
  • 입력장치 => 메인 컴퓨터의 그래픽 컨트롤러 => 출력장치
    • 워크스테이션: SGI FUEL, HP XW 9300

그래픽 프로그램

  • 그래픽스 응용 프로그램
  • 일반적으로 그래픽스 라이브러리API: Application Program Interface)를 이용하여 개발

디스플레이장치

  • 진공관 모니터(CRT: Cathode Ray Tube)
    • 전자총(Electron Gun)으로부터 전자빔(Cathode ray)을 스크린에 주사
    • 원리
      • 발광체의 지속성(Persistence of Phosphors)
        • Flicker 현상(밝기가 일정하지 않고 화면이 떨리는 현상)을 방지하기 위해 CRT 스크린에 주기적으로 활성화(Refresh)
      • Low persistenct: 애니메이션에 바람직
      • High persistence: 매우 복잡하고 정적인 그림에 적합하다
  • 액정 디스플레이 장치(LED: Liquid Display)??

래스터(Rasater) 그래픽 장치

  • 래스터
    • 오늘날 대부분의 디스플레이 모니터 방식
    • 쉐이딩(Shading) 및 컬러링(Coloring)에 적합하다
    • 픽셀 -> 스캔 라인 -> 래스터(수평으로 스캔된 라인의 집합)
    • 스캐닝할 픽셀 수 = 스캔라인 당 픽셀 수 * 스캔라인 수
    • 앨리어싱(Aliasing)
    • 래스터(Raster): 생성된 그래픽 이미지로 프레임 버퍼에 저장
  • 컬러 모니터
    • 빔 침투(penetration) 방식: 벡터 모니터(Random-scan monitor)에서 사용하며 발광체는 2개의 레이어가 존재한다
    • 화소(Picture Element = Pixel = Raster)
    • 인점(Phosphor Dots): 가까이 있는 점의 집합
    • 종횡비(Aspect Ratio): 가로 세로 비율
      • 4:3, 16:9
    • 해상도(Resolution): 래스터 장치의 선명도
    • 도트 피치(Dot Pitch): 동일선상의 인점 간의 거리
    • (a) 트라이어드 방식 (b) 스트라이프 방식(일반적인 LCD(Light Crystal Display 모니터)
    • 섀도우 마스크(Shadow mask)와 애퍼처 그릴(Aperture Grill)
  • 주사선과 인터레이싱
    • 주사선(Scan Line): 화면의 가로방향 화소를 따라서 진행하는 선
    • 인터레이싱(비월주사, 짜깁기, Interlacing, Interleaving): 주사선이 화면을 반쪽씩 교대로 그려내는 것
    • Hz: 30 Fuul Frame/Sec 보다는 60 Half Frame/Sec
    • NTSC TV 표준: 60 Half Frame/Sec, 525 Scan Line, 4:3 Aspect Ratio
  • 기본 구조
    • 화소 단위 컬러링
    • 계단 현상(Jaggies) = 앨리어싱(Alias)
    • 래스터 변환(Rasterization) = 스캔 변환(Scan Conversion)
      • 필수적으로 필요한 과정이다
      • 물체 좌표에서 화면 좌표로
      • 부동소수 좌표에서 정수 좌표로

프레임 버퍼(= Color Buffer = Video Memory)

  • DA 변환기: 비디오 컨트롤러 내부에 있다
    • 프레임 버퍼(디지털 정보)를 아날로그 전압으로 화면에 표시한다
    • 거의 동시에 일어난다(매우 빠름)
  • 용량
    • 24비트(R, G, B) 각각에 대해 256 화색도(Gray Level)
    • 24비트 프레임 버퍼로 나타낼 수 있는 색상 수는 약 1600만개
    • 사람으 눈으로는 약 35만개 구분

벡터 그래픽 장치

  • Line-drawing application에 적합하며 realistic shared scene에는 부적합하다
  • Raster-scan monitor보다 해상도를 높일 수 있다
    • 화소 개념이 없어 무한 해상도가 가능하다
    • 부드러운 선 그리기가 가능하다(앨리어싱 x)
  • 선-그리기 커맨드
  • Vector Display, Calligraphic Display, Stroke Display, Random Display
  • 벡터 그래픽 장비
    • 프레임 버퍼 없음
    • 디스플레이 리스트: 명령어 집합
  래스터 그래픽 벡터 그래픽
에일리어스(Alias 발생 없음
채움 다각형 빠른 렌더링 느린 렌더링
래스터 변환 필수적 불필요
메모리 대용량 프레임 버퍼 소용량 디스플레이 리스트

그래픽스 프로세서

  • 랜덤스캔 시스템
    • 그래픽 어플리케이션 프로그램이 실행되어 디스플레이 파일(Display file)이 생성되어 시스템 메모리에 저장
    • 이는 디스플레이 프로세서(Display Processor)에 의해 매 Refresh Cycle마다 모니터에 디스플레이된다
  • 래스터스캔 시스템(Raster-Scan system)
    • 그래픽스 명령어들이 실행되면 픽셀 이미지(Pixel Image) 형태로 프레임버퍼에 저장한다
      • 픽셀 -> 스캔 라인 -> 래스터
      • 스캔 변환
    • 비디오 제어기(Video controller)는 프레임 버퍼 내의 데이터를 주기적으로 모니터에 활성화한다

GPU(Graphic Processing Unit)

입력 장치

  • 2차원 입력장치
    • 마우스(2D, 3D 마우스)
      • relative 장치
    • 그래픽스 태블릿(Graphics Tablet, Data Tablet)
      • 핸드커서와 Stylus 사용
      • absolute position 장치
      • CAD나 지리 정보 시스템
    • 조이스틱(Joystick)
    • 라이트 펜(Light Pen)
    • 3D 디지타이저(Digitizer)와 3D 스캐너(Scanner)

하드카피 출력장치

  • 프린터
    • 임팩트 프린터(Impact printer): Dot matrix(60 ~ 180 dpi)
    • Nonimpact printer: Ink-jet, Laser(600 or more dpi)
      • 레이저 프린터는 벡터 방식으로 프린트하기 위해 PostScript 표준을 따름
    • 컬러 모니터: CMY 컬러모델, CMYK 컬러모델
  • 플로터(Plotter)
    • Drum plotter와 Flat-bed plotter 방식
    • plotter의 출력을 지시할 소프트웨어 명령어(Line drawing)가 필요, 펜이 4~16방향으로 이동
    • pLOTTER는 선그리기 방식이기 때문에 smoothly shaded region이나 raster image에는 부적합하다
  • 모션 캡처(Motion Capture) 장치
    • 사람이나 동물의 움직임과 같은 동적 데이터 입력
    • 자기적 모션캡처 장치, 광학적 모션캡처 장치

그래픽스 소프트웨어

  • 그래픽스 라이브러리: CORE, GKS, PHIGS, OpenGL, DirectX 등
    • 그래픽스 기능
      • Output primitives와 속성 지정: 선, 다각형, 원, 곡선, 문자열 등
      • 그래픽 객체의 모델링, 기하변환, 뷰잉변환
      • 객체의 Shading 및 Rendering
      • 논리적 그림 단위 정의: Segment(GKS), Structure(Structure), Object(OpenGL)
      • 입력장치로부터 상호대화식 데이터 입력
      • 제어 기능
  • 그래픽스 응용프로그램

그래픽스 표준

  • API: 고급 프로그래밍 언어에서 그래픽스 라이브러리를 호출
    • CORE(SIGGRAPH)
      • 1977년 제정, 1979년 개정
      • SIGGRAPH에서 정한 Graphics package의 표준
    • GKS (Graphical Kernel System)
      • ISO(1984), ANSI(1985) 공인
      • 1988년 GKS 3D로 발전
    • PHIGS (Programmer’s Hierarchical Graphics System)
      • ANSI(1988)공인
      • 그래픽을 계층적(Hierarchical)으로 구성하기 위한 표준
      • CAD/CAM, 지휘/통제, 분자 모델링 등
    • OpenGL
      • Silicon Graphics사의 GL(Graphics Library)로부터 1992년 플랫폼 독립적으로 개발
      • 지금은 산업계의 실질적 표준(de facto standard)으로 가장 널리 사용
    • Java 3D
      • Sun Microsystems 사에서 제안한 그래픽스 API
      • OpenGL 보다 high-level graphics API를 제공
      • Java 언어를 기반으로 개발되었으므로 인터넷 환경에서 많이사용
      • VRML 과 같은 장면그래프(Scene Graph) 개념에 입각
    • 라이브러리 발전과정
  • 장치 인터페이스: 입출력 장치와 표준적 방식으로 상호소통
    • CGI(Computer Graphics Interface)
      • ANSI 표준
      • 가상의 입출력장치(Virtual Device)를 장치 독립적으로 인터페이스
      • 장치 드라이버의 개발이 필요하다
  • 그래픽 데이터의 교환: 그래픽스 응용프로그램간에 그래픽 데이터의 교환 및 저장
    • CGM(Computer Graphics Metafile)
      • ANSI 표준
      • 그래픽 정보를 데이터 파일에 저장하고 전송하기 위한 표준
    • IGES: CAD/CAM과 같은 Graphics engineering database를 교환하기 위한 표준
    • STEP: 설계, 제조와 관련된 제품 데이터 교환 표준

OpenGL과 Graphics 응용소프트웨어

OpenGL

  • 3D 그래픽 모델링, 렌더링 API
  • 그래픽스 하드웨어에 대한 소프트웨어 인터페이스

  • 매우 빠르다(가속의 표준이 된다)
  • 역사
    • Silicon Graphics (SGI)사의 워크스테이션용 GL에서 시작 OpenGL Architecture Review Board (http://www.opengl.org)
      • OpenGL 공식기구 : SGI, DEC, IBM, Apple, Microsoft 등컨소시엄
      • 다양한 플랫폼에서 작동되도록 GL을 수정하여OpenGL제정
      • 1992년 OpenGL 1.0 발표 이후 2002년 7월에 OpenGL 1.4 사양 발표
    • 현재 2D와 3D 그래픽스 API로 가장 널리 사용되는 산업계표준으로 성장
  • 장점
    • 안정성(Stability): 10년 이상 다양한 플랫폼에서 검증되었다
    • 신뢰성 및 이식성(Reliability & Portability)
      • 창(window) 독립적, 운영체제 독립적이다
    • 유연성(Scalability): 다양한 종류의 시스템에서 동일하게 작동
    • 편리성(Ease of Use): 직관적인 인터페이스와 논리적인 명령어들로 구성
    • 문서화(Well-documented): 문서화가 잘 되어 있다

OpenGL 파이프라인

  • 데이터 흐름의 경로
    • 픽셀 기반, 이미지 원시(primitives) 파이프라인
    • 기하학, 정점 기반 원시(primitive) 파이프라인
  • 텍스처링은 두 가지 유형의 원형을 함께 결합한다.

OpenGL 구조

OpenGL 렌더링

OpenGL 라이브러리 구성

  • 프레임버퍼에 그림을 그리는 기능을 모아놓은 GL 및 GLU 라이브러리
    • GL: 메인 라이브러리, 함수에는 접두어로 gl이 붙는다
    • GLU: 고급 기능의 유틸리티 함수(곡선, 곡면, 고급 뷰잉)로, 접두어는 glu
  • 윈도우를 생성하거나 사용자 상호작용을 처리하는 AUX 또는 GLUT 라이브러리
    • AUX(Auxiliary): 응용 프로그램과의 인터페이스 툴킷 라이브러리, aux- 접두사
    • GLUT: 인터페이스 툴킷 라이브러리, 다양한 플랫폼 지원
  • 윈도우(창) 관리 API(추가)
    • GLX/AGL/WGL: OpenGL과 윈도우(창) 시스템을 연결

직교투영(원근감 없이 투영)

OpenGL 변환

  • 뷰잉(Viewing) 변환 : 관측자의 시점(viewpoint)을설정
  • 모델링(Modeling) 변환 : 3차원 공간에서 그래픽스객체를 이동, 신축, 회전 등
  • 투영(Projection) 변환 : 3차원 그래픽스 객체를2차원 평면으로 투영
  • 뷰포트(Viewport) 변환 : 투영된 그림의 출력될위치와 크기를 정의

쉐이딩 모델(Shading Model)

  • 물체의 입체감을 표현하기 위하여, 다각형 또는 다면체의색상을 점진적으로 변화
  • Flat Shading : glShadeModel(GL_FLAT), 다각형 면을 한가지색상으로
  • Smooth Shading : glShadeModel(GL_SMOOTH), 각 꼭지점의색들을 보간

렌더링 과정

OpenGL 함수

  • 변환 및 투영 뷰포트
    • 변환 행렬의 모드 설정 : glMatrixMode(mode)
      • 변환 행렬의 mode에는 GL_MODELVIEW, GL_PROJECTION 등
    • 변환 행렬의 값을 설정하거나 조작을 수행하는 함수
      • glLoadIdentity(); glLoadMatrix(*m); glPushMatrix(); glPopMatrix();
    • 기본적인 기하변환인 이동, 신축, 회전 변환 함수
      • glTranslate3f(tx, ty, tz); glScale3f(sx,sy,sz); glRotate4f(angle, x, y, z);
    • 직각투영(Orthographic Projection) 및원근투영(Perspective Projection)
      • glOrtho(left, right, bottom, top, near, far); // gl 에서 직각투영
      • gluOrtho2D(left, right, bottom, top); // glu 에서 직각투영
      • glFrustum(left, right, bottom, top, near, far); // gl 에서 원근투영
      • gluPerspective(fovy, aspect, zNear, zFar); // glu에서 원근투영
    • 뷰포트(Viewport)의 설정
      • glViewport(x, y, width, height)
  • 3차원 객체의 은면제거
    • 깊이검사(Depth Test) 설정 : 은면제거 과정을 실행
      • 설정 및 해제 : glEnable(GL_DEPTH_TEST), glDisable(GL_DEPTH_TEST)
    • Culling의 설정 : 다면체의 뒷면을 그리지 않는 기능
      • 설정 및 해제 : glEnable(GL_CULL_FACE), glDisable(GL_CULL_FACE)
    • 이중 버퍼링
      • 깜박임 현상을 없애기 위하여 프레임버퍼 두 개를 교대로사용
      • 그림을 그리는 버퍼의 지정 : glDrawBuffer(buffer)
        • ‘buffer’에는 GL_FRONT, GL_BACK, GL_FRONT_AND_BACK 값 지정
      • 버퍼 두 개의 역할을 교대시키는 함수 : SwapBuffers()
  • 색상 및 쉐이딩
    • 색상: glColor(r, g, b, alpha)
    • 쉐이딩 모델(Shading Model)
      • 물체의 입체감을 표현하기 위하여, 다각형 또는 다면체의색상을 점진적으로 변화
      • Flat Shading : glShadeModel(GL_FLAT), 다각형 면을 한가지색상으로
      • Smooth Shading : glShadeModel(GL_SMOOTH), 각 꼭지점의색들을 보간
  • 조명 및 재질
    • 조명모델
      • 주변조명(Ambient Light) : 물체의 위치에 상관없이 고르게비치는 빛
      • 산란반사 조명(Diffuse Light) : 빛의 방향으로 노출된 면이밝아지는 조명
      • 거울반사 조명(Specular Light) : 특정 부분이 집중적으로반사되는 빛
    • OpenGL에서 조명의 설정
      • 광원(Light Source)의 설정 : glEnable(GL_LIGHT0) 함수로모드를 지정한 후, glLight() 함수에서 광원의 위치 및 3가지조명의 색상값을 설정
      • 조명효과의 설정 : glEnable(GL_LIGHTING)로 모드를 지정하고glLightModel() 함수에서 3가지 조명의 밝기에 대한 색상값을설정
  • 텍스쳐 매핑(Texture Mapping)
    • 재질이나 질감을 나타내는 이미지를3차원 물체의 표면에 입히는 작업
    • 1D 텍스쳐 매핑 : glTexImage1D(), 텍스쳐 이미지의 폭이나 높이 중하나만 지정
    • 2D 텍스쳐 매핑 : glTexImage2D(), 이미지의 폭과 높이를 모두 지정
  • 곡면 그리기
    • GLU에서 지원하는 2차곡면(Quadric Surfaces) 함수
      • 원기둥 gluCylinder(), 원판 gluDisk(), 구 gluSphere()
      • 원뿔은 gluCylinder() 에서 한쪽 면의 반지름을 0.0으로 지정
    • 베지어 곡선
      • glMap1f() 함수로 제어점을 정의하고 glEvalCoord1f() 함수로그린다.
      • 베지어 곡면
      • 제어점은 glMap2f()로, 격자는 glMapGrid2f(), 메쉬는glEvalMesh2() 함수로 그린다.

기초 수학

  • 기본 요소
    • 지오메트리(Geometry)는 n차원 공간에 있는 물체들 사이의 관계를 연구하는 학문이다: 컴퓨터 그래픽에서 우리는 3차원으로 존재하는 물체에 관심이 있다.
    • 고도로 정교한 물체를 만들 수 있는 최소 세트의 원재료(세 가지 기본 요소)가 필요하다
      • 스칼라(Scalars)
      • 벡터(Vector)
      • 포인트(Point)
  • 좌표에서 자유로운 기하학(Coordinate-Free Geometry)
    • 카르테스식 접근법
    • 점이 공간 p=(x, y, z) 위치에 있다
    • 이 좌표와 관련된 대수적 조작으로 결과를 도출한다
      • 비물리적인 접근 방식
    • 물리적으로 임의 좌표계 위치와 상관없이 점이 존재한다
    • 대부분의 기하학적 결과는 좌표계와 무관하다
    • 유클리드 기하학 예제: 상응하는 두 변과 그 사이의 각도가 동일할 경우 두 삼각형이 동일하다
  • 스칼라(Scalars)
    • 스칼라(scalar)는 몇 가지 기본 공리(associativity, commutivity, inverse)에 따르는 두 가지 작업(추가 및 곱셈)으로 결합할 수 있는 세트의 구성원으로 정의할 수 있다.
      • 예) 우리가 익숙한 일반 규칙에 따른 실제 및 복잡한 수의 시스템을 포함한다. 정수, 자연수 등
  • 벡터(Vector)
    • 물리적 정의: 두 개의 속성(방향(Direction), 규모(Magnitude)를 가진 수량
      • 예) 힘(Force), Velocity, 그래픽스에서 방향성 있는 직선(다른 타입으로 맵핑될 수 있다)
  • 포인트(Point)
    • 공간 상의 위치
  • 공간(Space)
    • 벡터 공간: 스칼라와 벡터로 구성된다
    • 유클리드(Euclidean) 공간
    • 어파인(Affine) 공간: 스칼라, 벡터, 포인트로 구성된다
      • https://showmiso.tistory.com/248
      • 점과 선이 존재한다 (선 P(a) = P0 + ad )
      • 매개변수 형태(Parametric Form)
      • 다른 형태보다 강력하고 일반적인 형태로, 곡선 및 표면으로 확장된다
      • 이차원 형태
      • 볼록면(Convexity)
      • 객체의 두 점 중 어느 하나에 대해서도 이러한 점 사이의 선 세그먼트에 있는 모든 점이 객체에 있는 경우 객체가 볼록하다
      • 어파인 합
        • 점이 몇 개가 되든지 간에 각 점의 앞의 계수 x, (1-x)의 합이 1이 되는 경우를 어파인 합(Affine Sum)이라고 부른다.
      • 철포(convex hull): 도형에 들어간 데가 전혀 없음
      • 곡선과 표면(Surfaces)
        • 곡선은 비선형 함수 P(a) 형태의 매개변수 엔티티이다.
        • 표면은 선형 함수 P(a, b) 형태의 매개변수 엔티티이다
          • 평면(Planes)
            • 평면은 한 점과 두 벡터 또는 세 점으로 정의할 수 있다
            • 법선(Normals)
              • 모든 평면은 법선 벡터 n을 가진다
              • P(a,b)=R+au+bv로부터, n = u * v와 (P(a)-P) ×n=0를 도출하기 위해 벡터의 외적(cross product)을 쓸 수 있음을 알 수 있다
              • 벡터의 내적(Dot product)은 다음 성질을 만족한다
              • 외적 계산은 다음과 같다

좌표 참조 프레임(Coordinate-reference Frames)

  • 카르테지안 좌표계
    • 2D: x, y 좌표축 사용
    • 3D: x, y, z 좌표축 사용 (오른손 좌표계)
  • Non-카르테지안 좌표계
    • 특수한 경우의 오브젝트 표현에 사용
    • Polar 좌표계
      • 타원형, 쌍곡선, 포물선 등 대칭성을 가진 다른 곡선들로도 좌표계 표현이 가능하다
      • 사용 이유
    • 3D 곡선적(Curvilinear) 좌표계
    • 기타 좌표계

2차원 그래픽스의 기본요소

점&선

  • 점(Point)
    • 기하적 공간에서 좌표 (x, y)로 정의
    • 속성은 크기(Size), 명암(Intensity) 또는 색상(Color), 모양(Shape) 등
  • 선(Line)
    • 시작점 (xa, ya)와 끝점(xb, yb)의 절대좌표로 정의
    • 또는 시작점 좌표 (x, y)와 좌표의 증가값 (△x, △y)의 상대좌표로 정의
    • 속성은 선의 유형(Line Type), 굵기(Width), 색상, 선끝 모양(Line Cap) 등
  • 다중선(Polyline)
    • 시작점 (x1, y1)부터 마지막 n번째 점 (xn, yn)까지의 절대좌표로 정의
    • 또는 시작점 (x1, y1)과 각 좌표의 증가값들 (△x1, △y1) … (△xn-1, △yn-1)로 정의
    • 선의 속성 이외에 추가로 선 이음(Line Join) 등의 속성
  • 래스터 공간
    • Scan Conversion: 물체를 표현하기 위해 어떤 화소를 밝힐 것인지를 결정하는 작업
      • 비트맵(Bitmap): 픽셀과 함께 1대1 매핑되는 직사각형 배열의 비트
      • 요구하는 것: 연속적임, 두께와 밝기를 유지하는 것, 선 주위의 이상적인 라인을 밝힐 것, 속도
      • 변환
        • Discretization - 연속 신호를 이산 요소로 변환
        • 스캔 변환 - 디스플레이를 위해 정점/에지 정보를 픽셀 데이터로 변환
      • DDA 선 그리기 알고리즘 (Slope Intercept)
        • 부동소수 연산(덧셈), 반올림 연산 등으로 정수 연산에 비해 느리며 연속적인 덧셈에 의해 오류가 누적되고(부동소수 뒷 자리가 잘려나감), 선택된 화소가 실제 선분에서 점차 멀어져서 표류(Drift)하는 결과를 불러온다
      • Bresenham 선 그리기 알고리즘 (Midpoint Line)
        • 소수점 계산 없이 정수의 더하기 연산과 Shift 연산만으로 처리한다
        • 래스터화의 표준 알고리즘

원, 타원, 곡선 그리기

  • Bresenham 원 그리기 알고리즘
    • 정수 연산만으로 처리
    • 한 픽셀의 다음은 반드시 오른쪽 또는 오른쪽 바로 아래 점
    • k번째 점 (xk, yk)의 다음은 (xk+1, yk+1) 또는 (xk, yk-1)
  • 타원 그리기
    • 극 좌표계 이용
    • 1571834967937
  • 기타 곡선 그리기
    • 함수 y = f(x)로 표현 가능한 곡선에 대해, 적당한 간격의 x값에 해당하는 곡선 상의 점을 구한 후 선분으로 연결
    • 삼각(Sine) 함수, 지수(Exponential) 함수, 다항식(Polynomial) 함수, 스플라인(Spline) 함수 등

영역 및 다각형 채우기

  • 영역의 특성과 채우기 방식
  • 이웃한(Adjuscent 또는 Connected) 픽셀간의 연결 방식
    • 4방향 연결(4-Connected) 방식
      • 영역 2개
      • ■■□□
        ■■□□
        □□■■
    • 8방향 연결(8-Connected) 방식
      • 영역 1개
      • ■■□□
        ■■□□
        □□■■
  • 래스터 영역의 경계 픽셀과 내부 픽셀은 연결방식을 다르게 한다
    • 경계 8방향 연결 = 내부 4방향 연결 채우기
    • 경계 4방향 연결 = 내부 8방향 연결 채우기
  • 일반적인 래스터 방식의 출력장치
    • Bresenham 선 그리기 알고리즘은 8방향 연결방식
    • 영역채우기 알고리즘은 내부 영역을 4방향연결 방식으로 채우기
    • 종류
      • 씨앗채움(시드채우기) 알고리즘
        • 그림이 래스터 버퍼에 그려진 후 이미지에서 영역의 채우기를 실행
        • 페인팅 소프트웨어나 대화식 이미지 처리 프로그램에서 사용한다
        • 과정
          • 어떤 화소(pixel)가 다각형 내부임이 확인된다
          • 이 픽셀을 시드로 하여 이 픽셀에서부터 바깥으로 채운다
          • 경계화소 색을 만날 때까지 4방, 8방으로 번진다
      • 다각형 주사변환(주사선 채움: Scanline Fill) 알고리즘
        • 매 주사선 별 다각형의 내부 구간을 판단하여 해당 픽셀을 칠한다
        • 주로 벡터방식의 그리기 소프트웨어에서 사용한다
        • 과정
          • 홀수 규칙, 홀짝 규칙(Odd Parity Rule, Even-Odd Rule)
            • 홀수번째 교차화소부터 짝수번째 교차화소 직전까지 채운다
            • 짝수번째를 포함하지 않는 이유: 길이 보존
          • 접기횟수 규칙(Non-zero Winding Rule)
            • 주사선 별로 아래쪽 에지와 교차하면 접기 횟수를 1 증가, 위쪽 방향의 에지와 교차하면 1 감소한다
            • 이 때 접기 횟수가 0보다 큰 구간은 다각형의 내부영역으로 판단한다

문자의 표현

  • 래스터 폰트(Raster Font, Bitmap Font)
    • 글자 크기에 해당하는 사각형 그리드의 픽셀에 1과 0으로 표현
    • 메모리 내에서 비트맵에 대한 연산으로 처리하므로 출력 속도가 빠르다
    • 제작이 용이하나 확대하면 계단현상 발생
    • 글자의 확대, 회전, 밀림 등 변환은 매우 어려우며 품질이 저하된다
  • 벡터 폰트(Vector Font, Outline Font)
    • 글자의 윤곽선을 여러 부분으로 나누어 직선, 원호, 곡선 등으로 표현하고, 이들에 대한 제어점을 저장한다
    • MS 윈도우의 TrueType 폰트는 2차 B-스플라인(B-Spline) 곡선을 사용한다
    • PostScript의 Type1 폰트는 3차 베지어(Bezier) 곡선을 사용한다

안티앨리어싱(Anti-aliasing)

  • 래스터 출력의 문제점
    • 앨리어싱 - 래스터 출력장치에서 디지털화 과정의 샘플링 오차로 인한 왜곡현상
    • Discretization: 연속 신호를 이산 요소로 변환해야 한다
  • CRT에서 픽셀은 가우시안 그래프를 따르는 밝기 변화를 보인다
    • CRT는 기본적으로 흐릿함을 내장하고 있다
  • 픽셀의 갯수, 위치, 크기와 모양이 고정되어 있다
    • 해상도를 높인다
    • 필터링한다
  • 시그널 샘플링(Signal Sampling)
    • 함수와 변수는 항상 연속적(Continuous)이다
    • 특정 입력에 대해서만 함수와 변수는 이산적(Discrete)이다
    • 샘플링과 양자화 사용
  • 샘플링과 양자화
    • 샘플링(sampling): 연속되는 함수를 이산적인(discrete) 것으로 바꾸는 것
    • 양자화(quantization): 연속되는 변수를 이산적인 것으로 바꾸는 것
    • 샘플링과 양자화를 둘 다 사용해야 한다
  • 이미지 요소(Image Component)
    • 작거나 중간 빈도의 컴포넌트
      • 균일한 다양한 영역
      • 배경
    • 높은 빈도의 컴포넌트
      • 매우 다양한 영역
      • Edges
    • 앨리어싱이 일어나는 곳은?
  • 안티앨리어싱
    • 컬러 또는 회색조(Gray) 출력 장치에서 경계가 부드럽게 보이도록 하는 기법
    • 물체의 경계 픽셀에서 물체와 배경의 색상을 혼합해서 그린다
  • 적용 방법
    • 해상도 증가(샘플링 증가)
      • 이미지를 처음에 크게 만들고 작게 변환시킨다
    • 슈퍼 샘플링
      • 하나의 픽셀 영역을 여러 개로 분할한다
      • 슈퍼 샘플링 후, 원래의 해상도로 환원할 때 픽셀의 명암 값을 계산한다
      • 픽셀의 영역에 포함되는 고해상도 픽셀의 개수에 비례하여 명암 값을 계산한다
    • 영역 샘플링(Area Sampling) 기법
      • Bresenham 알고리즘을 응용하여 Pitteway와 Watkinson이 제안
      • 얼마만큼 다각형의 내부영역에 포함되는지 면적 비율을 계산한다

색상의 표현

색상, 명도, 채도의정의를명확히이해한다.

•RGB, CMY, HSV 컬러모델의차이점을이해한다.

•컬러프로파일과컬러처리시스템의필요성을이해한다.

•RGB 컬러모드와인덱스컬러모드의차이점을이해한다.

  • 전자기파(Electromagnetic Wave): 전기장, 자기장
    • 주파수 = 장의 세기가 바뀌는 수/sec
    • 파장 = 주파수의 역수
    • 가시광선의 파장 = 390nm - 720nm
  • 색상(Hue) = 우세 주파수의 색(에너지가 큰 파장의 주파수)
  • 명도 = 빛 에너지의 총량 (파형 아래의 면적)
  • 채도 = 색의 선명도(순도), Ed - Ew
    • 채도 증가: Ed 증가 또는 Ew 감소
    • Ew 감소: 명도 저하, 색상 인식이 어려움
  • 눈의 구조
    • 홍채: 빛의 양을 조절
    • 수정체: 초점거리 조절
    • 막대세포(Rod Cell): 명암인식, 어두운 환경에 반응
    • 원추세포(Cone Cell): 색상인식, 밝은 환경에 반응
  • 컬러 매칭
    • 580 nm 황색 = 적색 광원(0.25) + 녹색 광원(0.13) + 청색 광원(0.0)
    • 아래에서 500nm 근처 적색광원은 음의 값
    • G, B를 합성한 색상에서 적색 성분을 빼는 것이 현실적으로 불가능하다
  • 컬러모델
    • CIE(Commission Internationale de l’eclairage) 컬러 모델
      • 삼원색이 모두 양수인 함수, Y가 명도, x, z가 색을 결정한다
      • CIE 정규화
        • x + y + z = 1 이 되도록 x, y, z를 설정
        • x, y가 결정과면 z는 자동으로 결정되므로 x, y의 함수로서 색을 표현
      • 색 범위
        • 경계선: 순색(단일 파장)
        • 내부색: 순색의 혼합, 보색(예, A와 B)
    • 색 온도(Color Temperature)
      • 가열된 물체의 온도에 의한 색 표현
    • RGB 컬러모델
      • 삼중 자극이론(Tri-Stimulus Theory)
        • 원추세포는 파장 630nm(빨강), 530nm(녹색), 450nm(청색)에 가장 민감하게 반응
      • 가산모델(Additive Model)
        • 빛의 합성으로 색을 만든다
    • CMY 컬러모델
      • 감산모델
        • 물감의 합성 (프린터)
        • RGB를 CMY의 합성으로 표현한다
    • CMYK 컬러모델
      • CMY + K(회색농도, Chromatic)
      • 어떤 색을 만들기 위해 C = 120, M = 80, Y = 200 이 소모된다면 80이 최소량이므로 RGB를 80씩 차단한것과 같다
        • 그러므로 C = 40, M = 0, Y = 120, K = 80
      • 장점
        • 잉크 건조시간, 잉크 비용
        • 정밀한 회색농도를 표현(완벽한 보색차단)
    • HSV 컬러모델
      • 직관적이지 않은 RGB 모델을 개선
      • Hue = 색상, Saturation = 채도, Brightness = 명도
      • 화가의 직관
        • 셰이드 = 어떤 색상에 흑색을 섞음, 채도와 명도를 동시에 낮춘다
        • 틴트 = 어떤 색상에 백색을 섞음, 패도는 낮추고 명도는 높인다
    • 원뿔형 HSV
      • 색상을 둥글게 배치
    • HLS(Hue, Light Saturation)
      • 명도 범위를 2배로 확장
    • YUV
      • 컬러 TV의 흑백 TV 호환성
  • 컬러모드
    • RGB 컬러모드
      • 프레임 버퍼 내용이 색을 결정
      • 용량에 따라 하이컬러, 풀컬러, 트루컬러
    • 인덱스 컬러모드(컬러 인덱스 모드)
      • 컬러 번역기(컬러 보기표)
      • 프레임 버퍼 내용은 CLUT(Color Lookup Table)의 인덱스
      • 상세 컬러는 CLUT의 우측 칼럼에 의해 결정
      • 예로 팔레트가 있다 (유사한 색조의 표현에 유리하다)
      • 파일 형식: PNG, BMP, TGA, TIFF
  • 하프 토우닝
    • 우리 눈의 종합적 인식능력을 이용한다 (화면 화소에는 적용 불가능)
    • 디지털 하프 토우닝은 점의 개수를 조절한다(해상도는 감소)

2차원 그래픽스의 변환

기본적인 기하변환

  • 기본적인 기하적 변환에는 이동(Translation), 신축(Scaling), 회전(Rotation)이 있다.
  • 이동(Translation): 한 점 P(x, y)가 T(tx, ty)만큼 이동
    • 객체의 이동: 다각형의 경우 각 꼭지점을, 원의 경우 중심점을 이동하여 다시 그린다.
    • 강체 변형(Rigid-body transformation)
  • 신축(확대/축소, Scaling)
    • 한 점 P(x, y)가 원점을 기준으로 S(sx, sy)만큼 신축
    • 임의의 점에 대한 신축
      • (1) 기준점을 원점으로 이동: T(-xf, -yf)
      • (2) 원점에 대하여 신축: S(sx, sy)
      • (3) 원래 위치로 이동: T(xf, yf)
      • 즉, P` = T(xx, yy) * S(sx, sy) * T(-xx, -yy) * P
  • 회전(Rotation)
    • 한 점(P(x, y)를 원점을 중심으로 ∂만큼 회전
    • 임의의 점에 대한 회전
      • (1) 원점으로 이동: T(-xr, -yr)
      • (2) 원점을 중심으로 회전: R(∂) * T(-xr, -yr) * P
      • (3) 원래 위치로 이동: T(xr, yr)
      • P` = T(xr, yr) * R(∂) * T(-xr, -yr) * P

동차 좌표계 (Homogeneous Coordinate System) 를 이용한 변환

  • 기본변환은 P` = M1 * P + M2 의 행렬 형태로 표현 가능하다
  • 순차적인 기하변환을 처리할 때 각 단계별 좌표 값을 구하지 않고 바로 계산하려면 행렬의 합(M2)을 제거해야 한다
    • 동차 좌표계를 이용하면 행렬의 곱으로만 표현 가능하다
  • 카테지안 좌표(Cartesian coord) => 동차 좌표계(Homogeneous Coordinate)
  • 신축, 회전 및 이동 등의 변환을 행렬 형태로 나타낼 수 있고, 각 연산의 순서는 단일 동차 좌표계로 축소될 수 있다.
  • 동차 좌표계의 표현
    • h = 1일 때, 동차 좌표계는 (x, y, 1) 으로 표현한다
    • 모든 기하변환이 동일한 형태의 동차 좌표로 표현 가능하다

합성변환 (Composite transformation)

반사(Reflection)

밀림(Shearing)

래스터 방식에서의 변환

  • 프레임버퍼 내의 픽셀블록들을 직접 조작하여 변환
  • 변환이 효율적이다(수리연산 없이 비트연산 사용)
  • Bit Block Transfer(bit-blt) 또는 RasterOp
  • 일반적으로 H/W 또는 펌웨어 방식으로 처리

윈도우와 뷰 포트

  • 2차원 그래픽스의 뷰잉 과정
    • 모델 좌표계: 개별 객체의 표현
    • 월드 좌표계: 통합된 그림, 윈도우 설정
    • 뷰잉 좌표계: 뷰포트 내의 좌표
    • 장치 좌표계: 출력될 화면, 뷰포트 설정
  • 윈도우 뷰포트 변환
    • Zooming, Panning 등 다양한 기법으로 이동 및 신축변환 적용

클리핑(Clipping) 알고리즘

  • 클리핑
    • 뷰포트나 화면 경계 밖의 부분을 제거하는 알고리즘
    • 월드 좌표 클리핑과 뷰포트 클리핑
    • 점, 선, 영역, 텍스트 클리핑
  • 코헨-서더랜드(Cohen-Sutherland) 알고리즘
    • 1) 직선의 양끝점의 영역코드를 정함
    • 2) 양끝점의 영역코드 AND 연산이 0000인 경우 Accept, 아니면 Reject
    • 3) 2에 해당하지 않고 윈도우 경계와 교차하면 경계에서 선분을 분할

GUI와 대화식 입력기법

사용자 인터페이스란

  • 정의
    • 컴퓨터와 사용자 간의 의사소통 방법
    • 사용자가 어떻게 객체(Object)들을 생성하고 조작하는가 하는 방법을 의미한다
  • CUI(Character User Interface)와 GUI(Graphic User Interface)
    • GUI
      • 그래픽 화면에서 버튼을 누르는 등의 행위로 컴퓨터에게 작업을 시키는 방식이다
      • WIMP: 그래픽 사용자 인터페이스(GUI)의 기본요소
        • 윈도우(Window)
          • GUI 개념에서 가장 핵심이 되는 요소로, 화면상에서 정보나 작업공간을 표시하는 영역이다
        • 아이콘(Icon)
          • 정보의 종류나 기능을 표현하는 상징적인 작은 그림이다
        • 메뉴(Menu)
          • 사용자가 일일이 기억하지 않고도 컴퓨터를 수행할 수 있도록 연관된 명령어들을 그룹핑하여 목록형태로 보여준다
        • 포인터/커서(Pointer/Cursor)
          • 화면상에서 입력장치의 현재 위치를 보여주는 작은 그림으로, 위치와 현재 작업상태를 보여준다
    • CUI
      • 컴퓨터와 사용자가 글자로 명령을 주고 받는 형식이다

인터페이스 설계 시 고려사항

  • 일관성(Consistency)
    • 화면 내에서 각 구성요소의 조작방법, 메뉴의 위치, 아이콘의 의미 등이 일관성이 있어야 한다
  • 예측성(Predictability)
    • 사용자가 직관적으로 예측을 통하여 사용할 수 있어야 하며, 사용방법을 쉽게 기억할 수 있어야 한다
      • 예) MS windows 메뉴바의 항목의 경우 “파일(F), 편집(E), 보기(V)”로 시작하여 “도움말(H)”로 끝난다
  • 안정성(Stability)
    • 사용자가 실수를 적게 하도록 하고, 실수에 대한 대책을 마련해야 한다
  • 피드백(Feedback)
    • 사용자의 입력에 대해 즉시 반응을 보여야 한다
      • 예) 입력 상태에 따른 커서의 변환, 선택에 대한 돋보임이나 깜빡임 등

그래픽 데이터의 입력

  • 논리적 입력장치(Logical Device)
    • 프로그래머의 관점에서 보면 응용프로그램과의 인터페이스이다
    • 사용자 프로그램과의 높은 수준의 인터페이스로 특징지어지는(characterized) 디바이스 데이터의 추상화이다. (윈도우 디바이스 드라이버와 같은 기능들)
    • 종류
      • 위치 장치(Locator Device)
        • 화면(공간) 상 위치의 좌표 (x, y)를 입력하는 장치
        • 연속적으로 처리하면 획 좌표(Stroke)를 입력 가능하다
      • 지적 장치(Pick Device)
        • 그림의 구성요소((임의의 선이나 그림 일부)를 직접 선택
      • 수량 장치(Valuator Device)
        • 정해진 범위 내의 수량 값을 지정
      • 선택 장치(Choice Device)
        • 메뉴에서와 같이 나열된 여러 항목 중 하나를 선택
      • 문자열 장치(String Device)
        • 텍스트 문자열을 입력
  • 물리적 입력장치(Physical Device)
    • 사용자가 사용하는 하드웨어 입력장치
    • 실제 물리적 특성에 의해 설명된다. (마우스, 키보드, 조이스틱 등)
    • 종류
      • 위치장치(Locator Device): 위치 및/또는 방향 값을 반환한다
        • 마우스, 트랙볼, 태블릿, 조이스틱, 터치스크린
      • 지적장치(Pick Device):
        • 라이트 펜(Light Pen)
      • 수량장치(Valuator Device):
        • 슬라이드형 전위차계, 다이얼 방식의 회전형 수치 입력장치
      • 선택장치(Choice Device):
        • 버튼 박스, 기능 키패드(Function keypad)
      • 문자열장치(String Device)
        • 키보드

3차원 입력장치

  • 3D 위치 및/또는 방향 값을 반환한다
    • 디지타이저(Digitizer), 3D 스페이스볼(3D Spaceball), 글러브(Glove), 트래커(Traker)

대화식 입력 기법

  • 위치지정 기법(Positioning Technique)
    • 고무줄 기법(Rubber-Band) 기법
      • 선, 사각형, 원 등을 그릴 때 자주 사용
      • 커서를 따라 시작위치에서 현 위치까지 그림이 계속하여 변한다.
    • 드래깅(Dragging) 기법
      • 객체를 이동시킬 때 커서를 따라서 선택된 그림이 따라 다닌다
    • 제한(Constraint) 기법
      • 정해진 방향 또는 정렬에 맞도록 데이터가 제한적으로 입력
      • 수직선, 수평선, 일정 각도의 선 그리기, 고정된 가로/세로 비율의 원이나 사각형 그리기
    • 격자(Grid) 기법
      • 입력 데이터가 양 방향 격자선의 교차점에 위치, 일정간격을 유지
    • 스케치(Sketching) 기법
      • 마우스 버튼을 누르고 움직이면 버튼을 놓을 때까지 계속해서 그려진다
  • 지적/선택 기법(Picking/Selection Technique)
    • 시각적 피드백(Visual Feedback) 기법
      • 클릭한 객체에 대하여 선택되었음을 확인할 수 있도록 한다.
      • 선택할 수 있는 대상에 따라 커서의 모양을 바꾼다.
    • 핸들(Handle) 기법
      • 객체를 선택한 후 그림의 둘레에 핸들을 표시한다.
      • 크기 변경 또는 다각형의 꼭지점 변경 시에 해당하는 핸들을 드래깅 한다.
    • 중장력(Gravity Field) 기법
      • 정확한 위치가 아니어도 객체 근처에 가까우면 선택이 되도록 한다.
    • 선택레벨(Selection Level) 및 그룹핑(Grouping) 기법
      • 여러 객체가 겹쳐있을 때에 앞에서부터 순서대로 선택이 되도록 한다.
      • 복잡한 객체는 그룹핑하여 한번에 처리하도록 한다

3차원 사용자 인터페이스

  • 3차원 가상환경 기술응용 분야에 사용
    • 탐색항해(navigation)를 위한 기법
      • 둘러보기(Traveling) 기법: 장소의 이동에 대한 움직임을 지정하는 기법
        • 운전(Steering)
        • 목적지 지정(Target_based)
        • 시점 조작(Viewpoint Manipulation)
      • 길찾기(Wayfinding) 기법
        • 항해 도중에 의사결정을 위하여 필요한 정보를 부가적으로 보여주는 기법
        • 예) 지도(Map)나 모형(Miniature), 표지판(Landmark) 등
    • 선택 및 조작을 위한 기법
      • 선택/지적(Selection/Picking) 기법
        • 3차원 객체의 선택이나 지적을 위한 표시를 해주는 기법
        • 사용자 입력에 대한 피드백, 선택된 객체의 표시, 선택할 객체에 대한 표시가 필요
      • 조작(manipulation) 기법
        • 3차원 객체의 상태 및 조작 결과를 표시해주는 기법

입력장치의 작동원리

  • 입력 장치 동작을 설명하는 방법
  • 측정치(Measure)
    • 장치가 유저 프로그램에게 무엇을 반환하는가
  • 트리거(Trigger)
    • 장치가 언제 측정치를 반환하는가
      • 키보드의 return, enter 키
  • 입력 장치를 읽는 방법
    • 샘플 모드(Sample mode)
      • 트리거가 필요 없다
      • 사용자 프로그램에서 함수의 호출을 만나는 즉시 측정치를 반환한다
      • 예) C 프로그램의 getc()
      • 함수 호출 전에 데이터를 준비한다
    • 요구 모드(Request mode)
      • 장치가 트리거되기 전까지 측정치를 반환하지 않는다
      • 측정 프로세스가 트리거 신호를 받을 때 장치로부터 입력된다
      • 예) C 프로그램의 scanf()
    • 이벤트 모드(Event mode)
      • 장치가 트리거되고 유저가 무언가를 하기 전까지 기다린다
      • 두 개의 비동기(asynchronous) 프로세스
        • 이벤트 생성(Event generation): 장치 트리거
        • 유저 요구(User request): 이벤트 쿼리
      • 이벤트 생성과 프로세스는 독립적이다
      • 여러 입력 장치가 있을 때 적합하다
      • 예) 윈도우의 이벤트
        • 장치 트리거에 의해 이벤트를 생성한다
        • 이벤트를 이벤트 큐에 넣는다
        • 이벤트 큐와 프로세스를 검사한다

Vision-based HCI

  • 일상 생활에서 컴퓨터의 역할이 증가함에 따라, 많은 컴퓨터 시스템이 우리 환경에 내장될 것으로 예상된다. 이러한 시스템은 더 자연스럽고 사용하기 쉬운 인터페이스와 인간-컴퓨터 상호작용의 새로운 유형을 제공해야 한다.
  • 오늘날 키보드와 마우스, 리모컨은 컴퓨터화된 장비에 정보와 명령을 전송하기 위한 주요 인터페이스로 사용된다. 시각화, 컴퓨터 게임 및 로봇의 제어와 같은 3차원 정보가 포함된 일부 응용 프로그램에서는 트랙볼, 조이스틱, 데이터로브에 기초한 다른 인터페이스가 사용되고 있다.
  • 입력 장치가 얼마나 효과적인지 검토할 때 다음 특성을 고려해야 한다.
    • 입력속도
      • 문자를 입력할 수 있는 속도(일반적으로 초당 또는 분당 문자 단위 또는 분당 단어로 제공)
    • 오류율
      • 오류 수(일반적으로 100자당 오류로 표시됨)
    • 학습률
      • 특정 입력 장치 사용법을 배울 수 있는 속도.
    • 피겨(Fatigue)
      • 입력하는 동안 사용자가 얼마나 피곤해지는지
    • 근육 변종(Muscle strain)
      • 근육에 어느 정도, 어느 부위에 스트레인을 가하는지. 반복적인 운동 부상은 여기서도 분류할 수 있다.
    • 이동성
      • 공공 환경에서의 질량, 운반의 용이성 및 사용의 고려, 기기의 크기가 얼마나 작거나 작아질 수 있으며 여전히 사용할 수 있는가를 고려한다.
    • 사용자 선호도
      • 사용자들은 얼마나 쉽게 기존의 인터페이스를 포기하고 새로운 인터페이스를 사용할 것인가?
    • 이전에 나열된 모든 장치는 이러한 속성 중 하나 이상을 겪는다.
  • VisualPanel은 임의의 사각형 패널과 손가락 끝과 같은 팁 포인터를 직관적인 입력 장치로 배포한다. 이 시스템은 패널을 이용하여 원격 및 대형 디스플레이 제어, 물리적 키보드 시뮬레이션 등 많은 UI 작업을 수행할 수 있다.

3차원 그래픽스의 기하변환과 뷰잉(viewing)

3차원 그래픽스의 처리과정

  • 모델링(Modeling: 3D object Representation)
    • 다각형 면 모델링, 곡면 모델링, 솔리드 모델링, 스위핑 등
  • 투영(projection)
    • 3차원 객체를 2차원 출력장치에 맵핑하는 작업
    • 종류
      • 평행투영(parallel projection)
      • 원근투영(perspective projection)
  • 렌더링(Rendering)
    • 은면제거, 쉐이딩, 텍스쳐 매핑 등의 과정
      • 은면제거: 시점에서 앞에 있는 객체나 가려진 면들을 제거하는 과정을 의미한다. 이 과정을 거치면 현실감 있는 그래픽 화면을 얻을 수 있고, 렌더링하는 면의 수가 줄어들어 렌더링 시간도 줄어든다.
      • https://robodream.tistory.com/221
  • 기타 3D 디스플레이 기법
    • 깊이 표시법(Depth Queing)
    • 분해도와 단면도법(Exploded view와 Cutaway view)
    • 1571792308601

기본적인 3차원 기하변환

2D 변환(Transformations) 에서, 행렬(matrix) 또는 3 x 3 동질 좌표 양식(homogeneous coordinate forms)을 사용하여 2D 선형 변환(affine transformations)을 나타낼 수 있다.

이를 3D로 확장한다

  • Translation
    • 지정된 직선 경로(번역 방향)를 따라 좌표 위치 간에 위치를 변경하는 작업
    • 점P(x, y, z)를T(tx, ty, tz) 만큼이동
    • 임의의 점을 기준으로 신축
      • 기준점이 원점에 위치하도록 이동: T(-xf, -yf, -zf)
      • 원점을 기준으로 신축: S(sf, sf, sf)
      • 원래의 위치로 이동: T(xf, yf, zf)
      • 즉, P` = T(xf, yf, zf) * S(sf, sf, sf) * T(-xf, -yf, -zf)
    • Rotation(회전)
      • 한 좌표 위치에서 다른 좌표 위치로 지정된 원형 경로(회전 방향)를 따라 점 위치를 변경하는 작업
      • 오른손 좌표계(Right-handled Coordinate)
        • 3D 회전을 위해서 사용한다
      • 2D 회전을 지정하려면 회전각(angle)과 피벗 포인트(povot point)가 필요하다. 사실 2D 회전은 z축에 대한(z=0 일 때의) 3D 회전과 같다
      • 3D 회전은 회전각(angle)과 벡터(회전축: rotation axis)가 필요하다
      • 회전축과 좌표축이 평행한 경우 점 P를 z좌표축에 대하여 ∂만큼 회전
      • 점 P를 x좌표축에 대하여 ∂만큼 회전
      • 점 P를 y좌표축에 대하여 ∂만큼 회전
      • 임의의 회전축에 대한 회전
        • (1) 회전축이 원점을 지나도록 이동
        • (2) 회전축이 좌표축 중 하나와 일치하도록 회전
        • (3) 일치된 좌표축을 중심으로 회전 변환을 수행
        • (4) 단계 2)에서 실행한 회전이동의 역회전이동
        • (5) 단계 1)에서 실행한 평행이동의 역평행이동
        • 근본은 다음과 같다
    • 기타 3차원 변환
      • 반사변환(Reflection): 특정 평면에 의하여 물체가 대칭 이동하는 것
        • 반사변환은 일종의 회전각이 180도인 특수 회전이동
        • 예) X, Y 평면에 대한 반사의 경우
      • 밀림변환(shearing): 물체의 모양이 바뀌나, 부피는 변하지 않는다
        • 이 변환은 3차원 투영 및 뷰잉에서 매우 중요한 역할을 한다
        • 예) Z축을 기준으로 하는 밀림 변환 (a, b는 각각 x축, y축 방향으로 밀리는 비율)
      • 좌표계 변환(Coordination Transformations)
        • 우리는 반대로, 좌표계를 움직이는 것으로 3차원 변환을 생각할 수 있다
        • 객체를 고정시키고 좌표계를 변환시켜도 똑같은 효과
          • 반대 방향으로 이동 또는 회전시킨 효과
          • 좌표축을 확대/축소 하면 객체는 축소/확대 되는 효과
          • 뷰잉 과정에서 이용되며, 애니메이션 효과
        • 자동차를 모델링한 예
          • 앞바퀴를 표현하기 위한 좌표계와 차체를 표현하기 위한 좌표계가 다르다 (좌표계가 여러개 존재)
          • 자동차를 표현하기 위해서는 하나의 통합된 좌표계가 필요하다
          • 통합좌표계와 앞바퀴좌표계간, 통합좌표계와 차체좌표계간에는 좌표변환이 필요하다