DDA와 Bresenham 's 알고리즘의 차이

Anonim

Bresenhams 's 알고리즘은 디지털 선 그리기 알고리즘이며 컴퓨터 그래픽에서 그림을 그리는 데 사용됩니다. 이전에는 분석 분석기를 사용하여 픽셀을 계산 했으므로 선 그림이 가능했습니다. 그러나 이러한 분석 방법은 현재 이러한 디지털 알고리즘을 사용하고 모든 분야에서와 마찬가지로 컴퓨터 그래픽에서도 고품질의 방법을 발명 한 디지털 방식만큼 정확하지는 않습니다. 이러한 알고리즘의 발명은 완벽한 예입니다. 계속 진행하기 전에 이러한 알고리즘의 개념을 살펴 보겠습니다. 비록 그것이 우리의 논의 범위를 벗어나는 것으로 보이지만,이 둘의 기본적인 차이점을 지적하는 것은 필수적입니다. 알고리즘에 대해 잘 알고 있다면이 페이지의 끝에있는 실제 차이점으로 이동할 수 있습니다.

DDA (Digital Differential Algorithm) 란 무엇입니까? DDA는 주로 컴퓨터 그래픽에 선을 그리는 데 사용되며 실제 값을 사용하는 동시에 다음 픽셀 값을 예측합니다. 초기 픽셀 값을 (X0, Y0) (X0, Y0)로하고 대상 픽셀을 (X1, Y1) (X1, Y1)로 가정합니다. 다음과 같이 알려진 픽셀 값 (X0, Y0) (X0, Y0)에서 대상 픽셀 값을 계산하는 방법을 학습합니다.

DDA를 사용하여 목적지 값을 계산하는 방법은 무엇입니까?

  • Step-1:
여기에 입력 (X0, Y0) (X0, Y0)이 있고 그 행이 x 축 또는 y 축에 평행하게 실행되는지 확인해야한다. 이를 확인하기 위해 초기 픽셀 값과 대상 픽셀 값의 차이를 계산해 보겠습니다. 단계 -2: 이제는 차이점을 확인하였고 'dx'가 0이면 x 축을 따라 선을 그려야한다. 그렇지 않으면 선을 y 축과 평행하게 그려야합니다. 다음은 컴퓨터 언어에 의한 실제 계산입니다.

(절대 (dx)> 절대 (dy)) 단계 = 절대 (dx);

else

단계 = 절대 (dy);

3 단계: 이제 'x'좌표 또는 'y'좌표 픽셀 값을 식별하여 선을 그립니다.

X 증분 = dx / (실수) 단계;

Y 증분 = dy / (실수) 스텝;

Step-4:

이것은 목적지 픽셀에 도달 할 때까지 계산되어야한다. DDA 알고리즘은 계산을 수행하는 동안 픽셀 값을 가장 가까운 정수 값에 반올림합니다. 다음은 지금 논의한 코드 샘플입니다. (int v = 0; v

(999) x = x + X increment; y = y + Y 증분;

putpixel (Round (x), Round (y)); }

DDA를 사용하여 선을 그었고 이제 Bresenham으로 넘어갑니다.

Bresenham의 알고리즘은 무엇입니까?

이것은 또한 디지털 선 그리기 알고리즘이며 1962 년 Bresenham이 발명 한 이름이기 때문에 이름이 같습니다. 이 알고리즘은 더 정확하고 선을 그릴 때 픽셀 값을 계산하는 데 빼기 및 더하기를 사용합니다. Bresenham의 알고리즘의 정확성은 곡선 및 원형을 그리는 동안 신뢰할 수 있습니다. 이 알고리즘이 어떻게 작동하는지 살펴 보겠습니다.

스텝 1: 을 Bresenham 알고리즘의 초기 픽셀 좌표로서 가정 (X

을 + 1

Y

을). Step-2:

자동으로 다음 픽셀 값을 (x

a + 1, y

a + 1

)로 계산한다. 여기서 'a'는 증분 값 알고리즘은 그것이 형성 한 방정식을 더하거나 뺄으로써 그것을 계산합니다.

이 알고리즘은 반올림없이 정확한 값을 계산하므로 더 쉽게 볼 수 있습니다! Bresenham 알고리즘의 수치 예: 이제 점 (0, 0)과 (-8, -4)을 고려해보고 브레 센함의 알고리즘을 사용하여이 점들 사이에 선을 그려 보자. 주어진 데이터, (x1, y1) = (0, 0) 및 (x2, y2) = (-8, -4). 이제 미분 값을 아래와 같이 계산해 보겠습니다. ΔX = X1-X2 = -8-0 = 8 따라서, X = ΔX / X2 = 8 / -8 = -1에 대한 증분 값.

ΔY = Y2-Y1 = -4-0 = 4 따라서, Y = ΔY / Y2 = 4 / -4 = -1에 대한 증분 값. 상기 계산을 이용하여, 다음과 같이 계산된다: e = 2 * (4) - (8) = 8-8 = 결과 값을 표로 만든다. y 좌표의 값은 결정 변수에 따라 조정되며 여기서 계산을 무시하고 있습니다. (0, 0) 999 0 999 - (- 1,0) 999 - 결정 변수 (999) 1 0(- 2, -1) -2

-1

  • 0

(- 3, -1)

-3 < -1

(- 4, -2)

-4

-2

0

(- 5, -2)

-5 > -2

(- 6, -3) -6 -3 0
(- 7 -3) -7 DDA & Bresenham 's 알고리즘의 차이점: 산술 계산: DDA는 부동 소수점을 사용하여 실제 값을 계산에 사용합니다. 다음 픽셀 또는 점 값은 미분 방정식으로 결정됩니다.
X 증분 = dx / (실수) 단계 Y 증분 = dy / (실수) 단계 여기서 고정 상수는 사용되지 않지만 Bresenham의 알고리즘 고정 점 산술 계산에 사용됩니다. Bresenham의 알고리즘은 DDA와 달리 정수 산술을 사용합니다. 사용 된 연산 유형:
DDA는 곱셈 및 나눗셈 연산을 통해 미분 방정식을 해결합니다. 여기에서 X increment = dx / (float) 단계를 볼 수 있습니다. Bresenham의 알고리즘은 더하기와 빼기 연산을 사용하며 다음 픽셀 값 계산식 (x 999 + 1 999, y 999 + 1 999)에서 동일한 것을 볼 수 있습니다. 산술 연산은 BDA와 비교할 때 Bresenham에서 더 간단합니다. 효율성: 앞에서 설명한 바와 같이, Bresenham의 알고리즘은 DDA보다 간단한 산술 연산을 사용하므로 효율적인 결과를 얻을 수 있습니다. 속도:
DDA는 곱셈 및 나눗셈 연산과 함께 부동 소수점 정수를 사용하므로 Bresenham의 알고리즘은 덧셈 및 뺄셈과 함께 정수 연산 만 사용하는 반면 상대적으로 느립니다. 이것은 계산에 소요되는 시간을 상당히 줄여 주므로 DDA보다 빠릅니다. 정확도: DDA는 부동 소수점 값을 사용하지만 DDA의 정확성은 Bresenham의 정확도만큼 우수하지 않습니다. 다양한 요소가이 개념에 영향을 미치므로 Bresenham 's는 DDA보다 정확합니다. 반올림:
여기서 DDA 계산을 살펴보십시오. X increment = dx / (float) steps 'float'을 알아 채면 값을 반올림하지 않지만 Bresenham의 알고리즘은 가장 가까운 정수로 값을 반올림합니다. 따라서 사용 된 값은 Bresenham의 알고리즘에서 더 간단합니다. 무엇이 그려 집니까?
DDA는 그림 선과는 별도로 원형과 곡선을 그릴 수 있습니다. Bresenham의 알고리즘은 위에서 언급 한 모든 알고리즘을 그릴 수 있으며 정확성은 DDA보다 높습니다. 마찬가지로 Bresenham의 알고리즘은 DDA에 의해 생성 된 알고리즘보다 효율적인 곡선을 얻을 수 있습니다. 두 알고리즘 모두 삼각형과 다각형을 그릴 수 있습니다. 비싼 것은 무엇입니까? DDA는 반올림을 포함하기 때문에 Bresenham의 알고리즘보다 비용이 많이 든다. 어느 알고리즘이 최적화 되었습니까? 위에서 논의한 바에 따르면 Bresenham의 알고리즘은 속도, 비용 및 작업 사용 측면에서 최적화 된 알고리즘임을 분명히 알 수 있습니다.
표 형식의 차이점을 살펴 보겠습니다. S. 디지털 미분 알고리즘의 차이점 Bresenham의 알고리즘
1. 왜 이름입니까? 방정식의 디지털 구현 이었기 때문에 이름이 붙어 있습니다. 그것은 J. E. Bresenham에 의해 1962 년에 발명되었으므로 이름이다. 2.
계산 (Calculations) 더 복잡한 계산이 필요합니다. 사용 된 계산은 실제로 더 간단합니다. 3. 사용 된 연산의 유형

곱셈과 나눗셈을 사용했습니다. 여기에 사용 된 샘플 미분 방정식은 Xincrement = dx / (float) 단계, Yincrement = dy / (float) 단계입니다. 덧셈과 뺄셈을 사용합니다. 여기서의 샘플 계산은 (x ^ 999 + 1 ^ 999, y ^ 999 + 1 ^ 999)와 같이 표시 될 수있다. 4.

  • 산술 계산 값

부동 소수점 값을 사용합니다.

정수 값만 사용합니다. 5.

효율성

복잡한 산술로 인해 효율성이 떨어집니다.

  • 간단한 산술로 인해 효율성이 향상됩니다. 6. 속도

곱셈과 나눗셈 연산의 사용은 계산 과정에 많은 시간이 걸린다. 덧셈과 뺄셈 연산의 사용은 DDA보다 시간이 적게 걸린다. 7. 정확도 정확도가 떨어집니다.

  • 더 정확합니다. 8.

반올림

  • 실제 값을 사용하며 절대로 값을 반올림하지 않습니다. 가장 가까운 정수 값으로 값을 반올림합니다.9.
  • 그리기 기능 선, 원 및 곡선을 그릴 수 있지만 정확도는 떨어집니다. 우리는 심지어이 알고리즘으로 삼각형과 다각형을 그릴 수 있습니다.
  • 선, 원 및 곡선을보다 효율적으로 그릴 수 있습니다. 삼각형과 다각형도이 알고리즘으로 그릴 수 있습니다. 10. 계산 비용

반올림을 포함하므로 비용이 많이 듭니다.

Bresenham 알고리즘의 사용법은 DDA보다 저렴합니다. 11.

  • 최적화 된 알고리즘

최적화 된 알고리즘이 아닙니다.

  • 최적화 된 알고리즘입니다.

우리는 DDA와 Bresenham의 알고리즘 사이의 모든 가능한 차이점을 다뤘습니다. 반복적 인 것처럼 보일 수도 있지만, 그 점을 다시 언급 할만한 타당한 이유가 있으며 그것을 완전히 이해할 때 알게됩니다. 여전히 모호한 점이 있다고 생각되면 의견을 남겨주세요. 적절한 지식을 공유함으로써 함께 배우자!