디지털 미분 분석기(그래픽 알고리즘)
Digital differential analyzer (graphics algorithm)컴퓨터 그래픽에서 디지털 차동 분석기(DDA)는 시작점과 끝점 사이의 간격에 걸쳐 변수를 보간하는 데 사용되는 하드웨어 또는 소프트웨어다.DDA는 선, 삼각형 및 다각형의 래스터화에 사용된다.원근법 올바른 텍스처 매핑, 2차 곡선, 복셀 통과와 같은 비선형 함수로 확장할 수 있다.
선과 같은 선형 사례에 대한 그것의 가장 간단한 구현에서, DDA 알고리즘은 각 x에i 대해 방정식ii−1 x = x + 1i, y = yi−1 = y + m을 계산하여 간격의 값을 보간한다. 여기서 m은 선의 기울기이다.이 경사는 다음과 같이 DDA로 표현할 수 있다.
실제로 이 선 세그먼트에 놓여 있는 두 개의 연속된 점(x,y)은 방정식을 만족시켜야 한다.
퍼포먼스
DDA 방법은 부동 소수점 또는 정수 산술로 구현할 수 있다.고유 부동소수점 구현에는 보간 값(예: 좌표 x, y, 깊이, 색상 성분 등)당 1회의 추가 및 반올림 작업이 필요하며 출력 결과도 필요하다.이 프로세스는 빠른 추가 및 반올림 작업이 가능한 FPU가 있을 때만 효율적이다.
고정점 정수 연산을 위해서는 출력 사이클당 2회의 추가가 필요하며, 부분적인 부분이 오버플로될 경우 1회의 추가 증분 및 뺄셈이 필요하다.부분적 부분 오버플로 확률은 보간된 시작/끝 값의 비율 m에 비례한다.
DDA는 하드웨어 구현에 적합하며 처리량을 극대화하기 위해 파이프라인으로 연결할 수 있다.
알고리즘.
선형 DDA는 다른 DY 또는 dx의 단위 증분에 대해 더 작은 dy 또는 dx를 계산하는 것으로 시작한다.그런 다음 한 좌표에서 단위 간격으로 선이 샘플링되고 다른 좌표에 대해 선 경로에 가장 가까운 해당 정수 값이 결정된다.
양의 기울기가 있는 선을 고려하여 기울기가 1보다 작거나 같으면 단위 x 간격(dx=1)으로 표본을 추출하고 연속 y 값을 다음과 같이 계산한다.
첨자 k는 첫 번째 점에 대해 0부터 시작하는 정수 값을 취하며 끝점에 도달할 때까지 1만큼 증가한다.y 값은 화면 픽셀에 해당하는 가장 가까운 정수로 반올림된다.
기울기가 1보다 큰 선의 경우 x와 y의 역할을 반대로 한다. 즉, dy=1에서 표본을 추출하고 연속적인 x 값을 다음과 같이 계산한다.
음의 기울기가 있는 선을 따라 픽셀 위치를 결정하기 위해 유사한 계산을 수행한다.따라서 경사의 절대값이 1보다 작을 경우, t< < x n { {}}}}}<x_{\rm {end 즉 시작 극단점이 왼쪽에 있으면 dx=1을 설정한다.
프로그램
Turbo C++의 DDA 알고리즘 프로그램:
#include <graphics.h> #include <아이오스트림.h> #include <수학.h> #include <도스.h> #include <코니오.h> 공허하게 하다 본래의( ) { 둥둥 뜨다 x, 둥둥 뜨다 y, 둥둥 뜨다 x1, y1, 둥둥 뜨다 x2, y2, dx, dy, 스텝을 밟다; 인트로 i, gd = 탐지하다, gm; 개시그래프(&gd, &gm, "C:\\터보크3\\BGI"); 뻐드렁니가 나다 << "x1 및 y1 값 입력: "; 씨네 >> x1 >> y1; 뻐드렁니가 나다 << "x2 및 y2 값 입력: "; 씨네 >> x2 >> y2; dx = (x2 - x1); dy = (y2 - y1); 만일 (복근(dx) >= 복근(dy)) 스텝을 밟다 = 복근(dx); 다른 스텝을 밟다 = 복근(dy); dx = dx / 스텝을 밟다; dy = dy / 스텝을 밟다; x = x1; y = y1; i = 1; 하는 동안에 (i <= 스텝을 밟다) { 퍼픽셀(x, y, 5); x = x + dx; y = y + dy; i = i + 1; 지연시키다(100); } 게걸스럽게 먹다(); 근접 탐지기(); } 참고 항목
- 브레센햄의 라인 알고리즘은 라인 렌더링을 위한 알고리즘이다.
- 증분 오류 알고리즘
- Xiaolin Wu의 라인 알고리즘은 라인 안티앨리어싱을 위한 알고리즘이다.
참조
http://www.museth.org/Ken/Publications_files/Museth_SIG14.pdf
- Alan Watt: 3D Computer Graphics, 제3판 2000, 페이지 184(래스팅 에지). ISBN0-201-39855-9