Bresenham line 알고리즘 구현하기
본 자료는 2페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
해당 자료는 2페이지 까지만 미리보기를 제공합니다.
2페이지 이후부터 다운로드 후 확인할 수 있습니다.

목차

1. Bresenham line 알고리즘
(1) 알고리즘 구현
(2) 실행결과
(3) 문제점

2. 책에 있는 방식으로(c언어로=txt만 출력하겠끔)
(1) 소스
(2) 실행결과

3. 비쥬얼 베이직방식으로
(1) 알고리즘 구현
(2) 실행결과
(3) 문제점

본문내용

2 && y1 {
pk = pk+c2;
x1=x1+1;
y1=y1+1;
}
printf("%d\t %d\t %d\t %d\n",k,pk,x1,y1);
}
return 0;
}
비쥬얼 베이직방식으로
(1) 소스코드
'------- Bresenham line ----------------
//'점찍는 명령어를 찾을 수 없어서.. 동그라미(circle)명령어를 사용
/동그라미의 원주크기를 작게 하여 점처럼 보이게 했다.
Dim x1, x2, y1, y2, dx, dy, p As Integer
Dim twody, twodydx, x, y, xEnd As Integer
Private Sub Command1_Click()
x1 = Val(Text1.Text) ' 시작점 좌표와 끝점 좌표를 읽어
y1 = Val(Text2.Text) ' 읽어 온다.
x2 = Val(Text3.Text) ' val() 은문자를 숫자 형으로
y2 = Val(Text4.Text) ' 바꾸어주는 명령어 이다.
'-----------------------------------------------
dx = Abs(x1 - x2) ' dx = x좌표의 이동거리의 절대값
dy = Abs(y1 - y2) ' dy = y좌표의 이동거리의 절대값
p = 2 * dx - dy
twody = 2 * dy
twodydx = 2 * (dy - dx)
If (x1 > x2) Then '처음 좌표가 두번째 좌표보다 클때
x = x2
y = y2
xEnd = x1
Else '두번째 좌표가 크거나 같을때
x = x1
y = y1
xEnd = x2
End If
Circle (x, y), 5, QBColor(1) '처음 시작점을찍고
Form1.DrawWidth = 1 '점의 굵기를 지정해줌
While (x < xEnd) 'x좌표를 하나씩 증가시키며
x = x + 1 'x좌표가 끝날때까지 반복
If (p < 0) Then
p = p + twody
Else
y = y + 1
p = p + twodydx
End If
Circle (x, y), 5, QBColor(1) '점을 찍음
Wend
End Sub
(2) 실행결과
이상하게 비주얼 베이직에선 좌표 값을 크게 입력해야 했다.
오른쪽 그림은 값을 달리 해서 입력해 보았다
(3) 문제점
1. 직각으로 좌표를 입력했을 경우 선은 그려지지 않았다.
2. X의 증가 값보다 Y의 증가 값이 클 경우 선은 정확히 그려지지 않았다.

키워드

Bresenham,   line,   알고리즘,   c,   C++,   비쥬얼
  • 가격1,000
  • 페이지수6페이지
  • 등록일2006.09.29
  • 저작시기2006.9
  • 파일형식한글(hwp)
  • 자료번호#365481
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니