2011-12-18 3 views
1

벡터 점의 배열로 정의 된 객체가 있다고 가정하고 기본적으로 + x 축을 내려다보고 있습니다. 객체를 단위 벡터 (예 : (0,1))와 마주하게하려면 어떻게해야합니까? 3D 공간과 비슷하다고 가정할까요?2D 객체가 단위 벡터를 향하도록 만들기

편집 : 삼각 함수가 필요하지 않으므로 각도 및/또는 아크 타젠트를 사용하지 마십시오.

답변

1

2D 용으로 상당히 쉽습니다. 2D에서 객체 회전은 단일 각도로 나타낼 수 있습니다. 오리엔테이션 벡터를 사용하여 아크 탄젠트 루틴을 호출하여 각도를 얻은 다음 그 각도만큼 오브젝트를 회전시킵니다.

EDIT : 아크 탄젠트가 없습니까? 좋아, 자, 대상의 X 축을 어떤 벡터가 되길 원한다. (u, v). 이 경우 y 축은 항상 (-v, u)으로 표현되며 (u, v)이 단위 벡터 인 경우 단위 벡터이기도합니다.

다음과 같이하십시오. 객체에 상대적인 (x, y) 점이있는 경우 세계에 상대적인 위치는 (object.xCenter, object.yCenter) + x(u, v) + y(-v, u) = (object.xCenter + u*x - v*y, object.yCenter + v*x + u*y)이어야합니다.

예 : (5,5)에 위치한 객체입니다. x 축 방향을 향하고있을 때 (2, 2)에 대한 점을 기준으로합니다. 이제 sqrt (2)/2, sqrt (2)/2 (단위 길이 버전이 (1, 1))로 방향을 지정하려는 경우, 세계에 상대적인 점은 (5, 5 + 2 * sqrt (2)).

+0

죄송합니다. 뭔가 언급하는 것을 잊어 버렸기 때문에 죄송합니다. 제 질문을 편집했습니다. 또한, 나는 그 객체를 회전시키는 것을 알고 싶습니다. – slartibartfast

관련 문제