-
API를 활용한 반사벡터 구현Algorithm with C/Math 2020. 10. 3. 18:22
먼저, 아래의 영상을 보자. 이것이 우리가 만들 것이다.
위의 내용에 필요한 부분이 바로 반사벡터이다.
이에 대해 알아보자.
위의 그림과 같이 MoveVec이 있다고 가정하자.
공이 왼쪽 벽을 향해 부딪힌다는 경우.
( MoveVec은 우리는 알고 있다고 가정 )
그러면 공의 반사벡터를 구할 수 있다.
먼저, 약간의 해답을 제시하면 공의 이동벡터인
MoveVec의 x방향과 y방향을 이용하면 구 할 수 있다.
그림을 좀 더 자세히 그려보면
이 된다.
위의 그림을 한 번만 더 자세히 그리면 아래와 같이 나타낼 수 있다.
이번에 공이 위쪽 벽에 부딪힌 경우에 대해서 간략적으로 그리면
즉, 위의 규칙을 통해서 다음과 같은 결론을 내릴수 있다.
공이 왼쪽과 오른쪽 벽에 충돌했다고 하면
공의 이동벡터는 ( -1* MoveVecX , MoveVecY ) 이다.
공이 위쪽 혹은 오른쪽 벽에 충돌했다고 하면
공의 이동벡터는 ( MoveVecX , -1*MoveVecY ) 이다.
API의 좌표계는 콘솔 화면 창에서 좌측 상단이 원점이고 오른쪽과 아래쪽으로 갈수록
각 각 x값과 y값이 증가한다.
구현에 앞서 변수부터 정의해보자.
세 함수들을 구현해보자.
위의 함수들의 호출은 다음의 부분에서 한다.
위에서 Sleep함수를 호출한 이유는 지연 시키기 위함이다.
소스 파일
'Algorithm with C > Math' 카테고리의 다른 글
행렬의 응용 Scale & Rotation (0) 2020.10.07 행렬의 기본 연산과 행렬식,역행렬, 단위행렬 (0) 2020.10.04 API활용으로 공의 튀어오름을 구현(포물선 운동) (0) 2020.10.03 API를 활용한 이차함수를 이용해 점프 기능 만들기 (0) 2020.10.02 API를 활용한 점과 직선 사이의 거리 (0) 2020.10.01