인프런 커뮤니티 질문&답변

cnznsh님의 프로필 이미지
cnznsh

작성한 질문수

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

역삼각함수

(게임수학 - 역삼각함수) 벡터 외적으로 시계/반시계 방향 체크 하는 부분 질문 드립니다

작성

·

526

0

안녕하세요 선생님, 강의 열심히 듣고 있습니다!

 

먼저 질문부터 말씀 드리자면, 벡터A X 벡터B일 때, 벡터 B가 시계방향에 있음에도 왜 코드에서는 외적(Cross)값이 양수가 나오는지 궁금합니다!

 

벡터 외적으로 벡터들 간의 상대적인 위치(시계/반시계) 구하는 방법 공부하는데, 잘 이해가 되지 않아 구글이나 다른 자료를 통하여 벡터 외적 쪽을 추가적으로 공부하였습니다.

2차원 평면 상에서 하기와 같이 벡터a x 벡터b 를 했을 때, 양수가 나오면 벡터b는 벡터a에 대해 '반시계'방향으로 있으며, 음수가 나오면 벡터b는 벡터a에 대해 '시계'방향으로 나온다고 설명 되어 있으며, 다른 자료들을 찾아봐도 다 위와 같이 나와있더라구요.

(출처 : https://bowbowbow.tistory.com/14 )

 

다만 강의 코드에서는 아래와 같이 몬스터가 바라보는 방향(lookDir)벡터에서 몬스터에서 마우스로의 방향(MonsterToMousedir)을 외적 계산하였을 때, 이때 마우스 방향이 몬스터 기준으로 오른쪽('시계방향')으로 있으면 cross 값이 음수가 나와야 하지 않나 싶은데 실제로는 cross 값이 양수가 나오더라구요.

 

강의에서도 cross값이 0미만(음수)일 때는 반시계 방향이 있게 되므로 이때 값 보정을 위해 angle에 360-angle 처리하는 것으로 나와 있는 것으로 보니 반시계 방향일 때 음수가 되는 것이 맞는 것 같기는 한데,, 왜 이 코드에서는 양수가 나오는지 궁금합니다.

수학적 지식이 너무 없어서 그런가 암만 코드를 봐도 왜 이렇게 되는지 잘 이해가 안 되네요ㅠ 도움 주시면 감사 드리겠습니다

 

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

어디까지나 x, y 축의 기준이 어디로 되어 있느냐에 따라 다르기 때문에
같은 방향 = 같은 부호만 알면 되지,
그 부호가 무엇인지 등에 너무 집중할 필요는 없습니다.

cnznsh님의 프로필 이미지
cnznsh
질문자

넵 저런 로직으로 작동한다 정도로만 이해하고 써먹으면 되겠군요 감사합니다

cnznsh님의 프로필 이미지
cnznsh

작성한 질문수

질문하기