일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 아두이노
- Visual Micro
- vector
- set
- C언어
- 운영체제
- Stack
- Algorithm
- list
- Deque
- stl
- html
- 수광 소자
- Arduino
- 아두이노 소스
- 자료구조
- 통계학
- 컴퓨터 그래픽스
- LineTracer
- map
- arduino compiler
- 아두이노 컴파일러
- 라인트레이서
- WinAPI
- queue
- 시스템프로그래밍
- priority_queue
- c++
- Array
- directx
- Today
- Total
Kim's Programming
2차원 그래픽스 기본요소와 그리기(1/2) 본문
2차원 그래픽스
2차원 그래픽스의 기본적인 출력요소는 대게 점, 선, 다중선, 다각형, 원, 타원, 곡선, 문자 등으로 구성됩니다.
점과 선
- 점 (Point)
2차원 그래픽스의 모든 그림에는 점과 선이 가장 기본적인 구성요소로 이용되고 있으며 이러한 출력요소들은 래스터 방식의 출력장치에서 픽셀로 표현됩니다. 점의 속성으론 크기(Size), 명암(Intensity) 또는 색상(Color), 모양(Shape)등이 사용되고 있습니다.
- 선(Line)
기울기 m 이 0<=m<=1인 경우에는 x값을 매번 1씩 증가 시키면 y 값은 기울기 값인 m만큼 증가하여 위에 있는 그림의 위 2개의 선의 경우가 됩니다. 만약 기울기가 1보다 큰 경우에 x 값을 매번 1씩 증가시키면 y 방향으로 증가되는 값이 m이 1보다 크므로 가장 아래있는 선처럼 픽셀의 사이가 멀어지게됩니다. 따라서 기울기가 1보타 큰 경우에는 x값을 증가시키지 않고 y값을 증가시키게 됩니다. 이러한 원칙을 적용하여 다음과 같이 공식을 유도할 수 있습니다.
1) 초기화
2-1 ) 기울기 -1<m<1 일때 다음 계산을 수행
매번 K+1번째 점에서 (단 )
2-2 ) 기울기 -1>=m , m>=1 일때 다음 계산을 수행
위의 그림에서 보듯이 k번쨰 점 의 다음점 은 이거나 또는 입니다. 이때 어느 점을 판단은 원래의 선과 K+1번 째 점에서의 차인값 d1과 d2로 부터 판별식을 계싼하여 결정하게됩니다. k+1번째 점에서의 차이값d1에서 d2를 뺀 값을 구하면
같이 됩니다. 기울기 m의 값은 이므로 위 식의 양변에 를 곱하여 이를 이라 하면
이 되며 이 식에서 에 를 대입하면 과 의 관계식을 구할 수 있습니다.
는 1또는 0이므로 다음과 같은 식을 2개를 얻을 수 있습니다.
또는
여기서 을 C1으로 하고 를 C2로 하게됩니다.
선의 시작점은 이므로 의 공식으로부터 초기값 을 다음과 같이 구합니다.
이 식에서 초기값 p1을 알면 p2를 구할 수 있고 pk+1은 pk를 통해서 구할 수 있습니다. 따라서 정리하게 되면 Bresenham 선 그리기 알고리즘은 다음과 같이 됩니다.
(기울기가 로 가정)
1) 초기화
시작점의 좌표를 (x1,y1)로 하고 다음 계산을 합니다.
C1 = , C2 =
2) d1-d2의 판별식 pk의 값에 따라 다음 점의 위치를 아래와 같이 구합니다. ()
인 경우 다음 픽셀 점은 이며 입니다.
인 경우는 다음 픽셀 점은 이며 입니다
'Computer Theory > Computer Graphics' 카테고리의 다른 글
2차원 그래픽스의 변환 (0) | 2016.01.23 |
---|---|
2차원 그래픽스 문자와 색상 표현 (0) | 2016.01.23 |
2차원 그래픽스 다각형 영역과 채우기 (0) | 2016.01.23 |
2차원 그래픽스 기본요소와 그리기(2/2) (0) | 2016.01.23 |
2차원 그래픽스와 3차원 그래픽스 (2) | 2016.01.22 |