수학 3

프로그래밍을 위한 수학 - 벡터 기초

벡터 벡터는 “크기와 방향을 모두 가지는 어떤 양”으로 정의된다. 각 프레임마다 객체는 특정 수 픽셀만큼 가로 및 세로로 움직이도록 프로그래밍하게된다. 객체의 새로운 위치는 현 위치에 속도를 적용한 값이 된다. 위 그림을 코드로 옮기면 아래와 같다. // location = (this.x, this.y) this.x += this.vx // horizontal steps this.y += this.vy // vertical steps // new_location = (this.x, this.y) 벡터의 덧셈 두 벡터 u = (5, 2), v = (3, 4)가 있다고하면 u + v = (8, 6)이다. 두 벡터를 더한다는 것은 단순히 벡터의 성분 x와 y 값을 더하는 것이다. 코드상에서 중력을 표현할때도 ..

프로그래밍을 위한 수학 - X축과 직선이 이루는 사이각 구하기

마우스로 찍은 점을 기준으로 야구공이 회전하는 기능을 만들 것이라고 가정 해보자. 그림은...벡터로 되어있지만 어쨌든 검은색 화살표 끝이 가리키는 방향이 유저가 찍은 좌표 x, y라고 하겠다. 야구공은 얼마만큼 회전해야할까? 위에서 본 그림을 우리에게 익숙한 직각 삼각형으로 나타내면 사이각 θ에대해 이렇게 정리할 수 있다. 우리는 V에대해 모르기때문에, 탄젠트 식으로 θ값을 구할 것이다. 양변에 역탄젠트(Arctangent)를 취해주면 식은 θ에 대하여 정리된다. 구글에 Math.atan2를 쳐서 가장 위에나온 javascript atan2 메소드의 설명을 가져와 보았다. The Math. atan2() method returns a numeric value between -π and π represen..

알고리즘 실전 활용을 위한 요약

알고리즘을 실전에 활용하기 위해서, 간단하게 어떤 알고리즘이 어떤 역할을 수행하는지에 대한 요약글을 적어보려한다.나동빈님의 알고리즘 강의를 수강하면서 차곡차곡 적어나가보도록 하겠다. 등장하는 사진의 출처는 역시 나동빈님의 블로그/강의다.영어/한국어/줄임말 모두로 제목을 걸어놓았으니 Ctrl + F로 원하는 알고리즘을 찾으면 된다. 너비 우선 탐색 (Breath First Search, BFS)최단 길이를 보장해야 할 때 많이 사용한다. 현재 노드에서 가장 가까운 노드부터 방문하는 것으로,위와 같은 그래프일때 1부터 탐색을 시작하면 1 - 2 - 3 - 4 - 5 - 6 - 7의 순서로 방문하게 된다. 추후 다른 알고리즘에 활용되는 기본 알고리즘이다. 깊이 우선 탐색 (Depth First Seach, D..