Flash CS4 + ActionScript 3.0로 벡터 내적, 시계방향 여부 구하기.

빨간 사각형과 파란 사각형은 마우스로 드래그가 가능하다.
빨간 선과 파란 선 사이의 내적, 파란선이 빨간선의 시계 방향 쪽에 있는지를 실시간으로 계산해 표시하게 하다.

회전 제한 각도가 있는 유도탄을 만드는 코드에서 두 각도의 크기 중 작고 큰 걸 결정하거나 회전시 시계방향으로 도는게 가까운지 반시계방향이 가까운지를 결정하는데 벡터가 쓰였는데 잘 이해가 안가서 잠시 미뤄두고 이전 벡터관련하여 테스트하던 게 있던 것이 생각나 간만에 다시 꺼내 다듬었다.

빨간 선과 비교할 파란색 선을 추가하고 둘 다 마우스로 드래그 가능하도록 만들다.
빨간 선과 파란 선의 내적 값를 텍스트 박스에 표시하고,
파란 선이 빨간 선의 시계방향/반시계방향에 있는지 여부를 계산해 Yes/No로 텍스트 박스에 표시했다.

두 벡터 선을 움직이며 실시간으로 내적 값이 변화하는 것을 보니 두 벡터간 내적이 각도(cos)와 관련 있다는 것을 시각적으로 이해할 수 있게 됐다. 두 벡터 사이의 각도가 작을 수록 내적 값은 커지고 두 벡터가 수직이 되었을 때 내적값은 0이 된다.
두 벡터가 단위 벡터일 경우 두 벡터의 내적 값은 두 벡터 간 각도의 cos 값이 된다.

15/5/10 일

A, B 두 벡터간 내적 구하기: Ax * Bx + Ay * By
B벡터가 A벡터의 시계방향에 있는지 여부 판단:
Ay * Bx > Ax * By 이면 반시계 방향, 아니면 시계 방향.

     //내적 구해 텍스트박스에 표시하기
     insideVal = vRed.x*vBlue.x + vRed.y*vBlue.y;
     insideT.text = String(int(insideVal));

     //파란선이 빨간선의 시계방향인지 여부 판단하기
     if(vRed.y*vBlue.x > vRed.x*vBlue.y){
          clockT.text = "no.";
     }else{
          clockT.text = "yes.";
     }