이전 포스팅에서 N차원까지 확장이 가능한 점의이동, 크기변환, 회전이동 기하변환에 대해서 다뤘습니다. 이때, N차원은 N개의 Element를 갖는 데카르트 좌표계를 사용했습니다. 기억하실지 모르겠지만, 기하변환에 사용되는 "동차 좌표"가 있다고 과거 포스팅에서 언급했습니다. teus-kiwiee.tistory.com/42 1. 점과 선 컴퓨터의 화면은 점과 선 으로 이뤄져 있다고 할 수 있습니다. (결국 선도 점으로 이뤄져 있죠) 이때, 컴퓨터는 어떻게 점과 선을 표현할까요? 이번 포스트는 컴퓨터가 점과 선을 표현하는 방법 teus-kiwiee.tistory.com 지난번 포스트에서 3개의 기하변환을 다뤘고, 점의 이동은 Vector(Matrix)의 덧셈을 통해서 구했습니다. 이때 동차좌표계를 사용하면서..
기하변환? 기하변환이란 기하학적인 좌표계에서 성분의 변화라고 할 수 있습니다. 1. 1차원 좌표계 점을 (x1,y1) -> (x2, y2)로 움직이는것이 가장 기초적인 기하변환 이라고 할 수 있겠죠. 이때 x2 = x1 + delx, y2 = y1 + dely 로 표현됩니다. 이제 이 식을 벡터로 표현하면 이때, 이 두 점을 원점에서 부터 비교하면, 특정한 점을 원점으로부터 거리만큼의 배수만큼 증가시키는 크기변환은 위와같은 행렬곱을 이용하면, 가로를 a배, 새로를 b배 늘리는 것을 손쉽게 할 수 있습니다 :) 이제 점의 직선의 이동을 했으니, 회전을 생각해봅시다. 원점에서 떨어진 거리가 같을 때, 각도 W에서 V만큼 추가로 회전하는 기하변환 입니다. 이때 반지름을 r이라고하면, x1, y1 과 x2, y..
점과 선, 이번에는 곡선입니다. 곡선은 원뿔에서 나옵니다. 네. 곡선(쌍곡선, 원, 타원, 한쪽곡선)은 두개의 원뿔로 부터 구할 수 있습니다. 이러한 곡선의 Pixel화 역시 직선에 방정식에서 사용한 Bresenham알고리즘을 사용하면 화면에 Pixel화 하여 Display하는것이 가능합니다. 아래는 이제 곡선을 예로 들어보겠습니다. 곡선의 방정식 역시 X좌표를 이동하면서, next X에서 next Y와 Next Y+1의 사이점을 곡선값과 비교하게 됩니다. 이 비교식을 통해서 판별식을 만들고, 만들어진 판별식으로 각 X마다의 Next X에서 Y값을 구하게 됩니다. 원의 방정식을 예로 판별식을 봅시다. 이때, 직선과 다르게 곡선은 미분값이 일정하지 않습니다. 때문에 X의 위치마다 n의 값을 바꿔가며 판별을..
컴퓨터의 화면은 점과 선 으로 이뤄져 있다고 할 수 있습니다. (결국 선도 점으로 이뤄져 있죠) 이때, 컴퓨터는 어떻게 점과 선을 표현할까요? 이번 포스트는 컴퓨터가 점과 선을 표현하는 방법에 대한 포스트 입니다. 1. 점 2차원 평면에 점이 있다고 해 봅시다. 이때 기존에는 (x, y) 두개의 Element로 표현합니다. 이를 데카르트 좌표라고 합니다. 이때, 컴퓨터에선 점의 표현은 위해서 동차좌표라 하여, Element h를 추가한 좌표를 사용합니다. 데카르트 좌표 ==> 동차좌표 (x, y) ==> (xh, yh, h) 컴퓨터에서 점 표현에 동차좌표를 사용하는 이유는 추후 기하변환(회전, 수축, 이동 등)에서 h의 추가로 얻어지는 계산 및 편의성이 증가하기 때문입니다 (추후에 포스팅 예정입니다) 2..
유전알고리즘은 최적화 알고리즘의 한 종류로, 적절한 정보의 Coding을 통해서 유전/진화 Modeling을 구축하고, 최적해를 구하는 알고리즘 입니다. 말 그대로 유전, 적자생존 + 돌연변이발생이라는 생명체의 진화과정을 모사한 알고리즘이라 할 수 있습니다. 이때, 각 자손은 유전자(Parameter)를 가지고 있고, 이 유전자에 따른 우월성을 따지게 됩니다. 적자생존 이기 때문에, 우월한 유전자는 상대적으로 유리하게 살아남아 유전자를 다음 세대로 전달하고 그렇지 못한 유전자는 사라지게 됩니다. 이때 유전알고리즘의 특징으로 교차와 돌연변이가 있습니다. 1. 교차 교차는 두개의 개체를 임의 or 우월성에 따라 추출하고, 두 개체의 교배(유잔자 혼합)을 하는것을 의미합니다. 개체를 선택하는 방법은 랜덤, 우..
Radix Sort는 비교기반이 아닌 값의 분포를 이용한 정렬 알고리즘 입니다. Radix이 한글로 기수라고 하는데, 나누기를 할때 몫에 해당하는 값이라고 합니다. 이때 10^n의 기수를 생각하면, 각 자리수를 이용해서 값을 정렬하는 알고리즘이라고 볼 수 있습니다. 첫번째 Element부터 1의자리를 비교하여, 해당 1의자리에 해당하는 List로 삽입을 진행합니다. 이렇게 모든 Element에 대해서 진행 후, 삽입된 List를 순서대로 풀어주면 한번의 Cycle이 끝납니다. 보시면 첫째자리의 값 기준으로는 모든 Element가 정렬된 것을 볼 수 있습니다! 이제 두번째 보시면, 왜 이런작업을 하는지 알 수 있습니다. 보시면, 10의자리 숫자를 기준으로 정렬할 때 1의자리 숫자의 정렬이 유지됩니다.(10..
- Total
- Today
- Yesterday
- git
- 사칙연산
- GDC
- 병렬처리
- Sort알고리즘
- Search알고리즘
- 동적계획법
- heap
- 자료구조
- 완전탐색 알고리즘
- Greedy알고리즘
- 분할정복
- 알고리즘
- AVX
- 이분탐색
- 프로그래머스
- 컴퓨터그래픽스
- stack
- Python
- SIMD
- prime number
- 코딩테스트
- C++
- hash
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |