2011-01-12 2 views
1

모든 기사는, 그들은이 mathematical term의 아이디어에서 오는가Bresenham Line 알고리즘의 의사 결정 변수는 어떻게 계산 되었습니까? 내가 Bresenham 선 알고리즘에 대한 연구

Pi = dx * (d1 - d2) 

변수 결정에 대해 이야기?

내 말은 결정 변수로 dx * (d1 - d2)을 취한 뒤에 있었던 생각은 무엇입니까?

d1 - d2 만 찍지 않았습니까?

Here is one of the articles.

+0

아는 것이 없으면 의사 결정 변수가 어떻게 사용되는지 말할 수 없습니다. 이것은 모든 구현이 사용하지 않는 알고리즘의 다른 부분의 이름 일 수 있습니다. 예를 들어, http://en.wikipedia.org/wiki/Bresenham's_line_algorithm은 의사 결정 변수를 설명하지 않습니다. – chubbsondubs

답변

2

우리가 d1-d2에 관심있는 유일한 정보가 표시이기 때문에, 우리가 양의 값을 곱하면 아무것도 잃을 수 없습니다. 우리는 실제로 d1d2의 값을 알지 못하며, 우리가 알고있는 것들로부터 그들의 값을 계산해야합니다. 그러나이 계산에는 dX으로 나누기가 포함되며 가능한 경우 구분이 느려지므로 피해야합니다. 결과적으로 dX은 항상 양수이므로 d1d2dX으로 곱하면 원하는 정보를 잃지 않고 나누기 연산을 제거 할 수 있습니다.

1

브레 센함의 알고리즘은 45도 섹션으로 잘라낸 원의 한 부분에 초점을 맞추고 그 중 하나만 해결합니다. 원은 점 x1, y1 (즉, 전달 된 첫 번째 매개 변수)에서 그릴 수있는 모든 선을 고려하여 형성됩니다. 그러나, 형성 될 수있는 모든 라인에 솔루션을 일반화하기 위해 단 하나의 섹션 (즉, x가 양방향 모두에서 y보다 빠르게 상승한다고 가정하기 때문에, 그 원의 다른 모든 섹션을 하나의 섹션으로 변환해야 함) 그것은 원을 그리는 방법을 알고 있습니다. 일반적으로 x1, y1 < x2, y2를 확인하고 이것이 보유되지 않은 경우 스왑하는 초기화 알고리즘의 일부가 초기화 코드로 표시됩니다. 이렇게하면 처리해야하는 줄 수의 관점에서 반을 효과적으로 줄일 수 있습니다. 이제 코드의 다음 부분에서만 4 가지 다른 슬로프를 처리해야합니다. 의사 결정 변수는 알고리즘이 속하는 4 개의 섹션을 파악하는 최적화입니다. 우리는 항상 양의 X 방향으로 가고 있지만 문제는 우리가 X보다 빠르게 (섹션 1 & 4 시계 시작 위치) 또는 X가 Y보다 빠르게 움직이는 것입니다 (섹션 2 & 3).

결정 변수를 사용하면 루프의 각 반복에서 if 문을 수행하지 않아도됩니다.

관련 문제