Location | Tag | Media  ||  A | P

펌 :http://blog.naver.com/gyuhwa_kim?Redirect=Log&logNo=40056228173


한참을 고민했던 확장판 Bresenham 선 그리기 알고리즘 이렇게도 하는구나!!



    (1) 0 ≤ m ≤ 1
      기본적인 Bresenham 알고리즘 사용

    (2) 1 < m ≤ ∞
      원래 직선 l 상의 점 (x,y)들을 y' = x, x' = y 로 변환시킨 직선 l'의 기울기 m'는 0 ≤ m' < 1의 기울기를 갖는다. 즉 직선 l을 l'로 변환(전처리)시킨 후, 이것에 Bresenham 알고리즘을 적용하여 직선을 그리고, 다시 원래대로 x와 y의 값을 바꾸어 복구시킨다.

    (3) -1 ≤ m ≤ 0
      위의 기울기를 갖는 직선 l를 y축 대칭(x'=-x) 시킨 직선 l'의 기울기 m'는 0 ≤ m' ≤ 1의 기울기를 갖게 되므로, 직선을 y축 대칭시킨 후, Bresenham 알고리즘을 적용하여 직선을 그리고, 다시 y축 대칭을 시켜 원래의 직선을 구한다. (4) -∞ ≤ m < -1
        위의 기울기를 갖는 직선 l의 경우엔 y=-x 직선에 대해 대칭시키고, x축 대칭을 시키면 0과 1사이의 기울기를 갖는 직선이 되므로, 전처리에서 y=-x 직선에 대해 대칭변환을 하고, Bresenham 알고리즘을 적용한 후 다시 x축 대칭 변환을 한 수 y=-x 직선에 대해 대칭변환을 시켜 그린다.


    -위의 각 조건들을 정리한다면
    ① 전처리 단계
      직선의 기울기 m에 대해서,
        0 ≤ m ≤ 1 : 아무것도 하지 않는다.
        1 < m ≤ ∞ : y=x 대칭변환을 한다.
        -1 ≤ m ≤ 0 : y축 대칭변환을 한다.
        -∞ ≤ m < -1 : y=-x 대칭변환, x = 0 대칭 변환을 한다.

    ② Bresenham 알고리즘 적용
    ③ 후처리 단계
      원래 직선의 기울기 m에 대해서, Bresenham 알고리즘을 적용한 직선을
        0 ≤ m ≤ 1 : 아무것도 하지 않는다.
        1 < m ≤ ∞ : y=x 대칭변환을 한다.
        -1 ≤ m ≤ 0 : y축 대칭변환을 한다.
        -∞ ≤ m < -1 : x = 0 대칭 변환 y=-x 대칭변환을 한다.





기본 Bresenham 알고리즘. 
http://www.cs.helsinki.fi/group/goa/mallinnus/lines/bresenh.html

'프로그래밍' 카테고리의 다른 글

svn external link 설정방법  (0) 2013.04.19
git submodule 사용법  (0) 2013.04.11
NDK CallStack  (0) 2012.11.15
parallel make  (0) 2012.11.15
visual studio 벡터 삽질 공유  (0) 2012.11.15
Posted by Bestend
: