Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania bez odpowiedzi
Viewing all articles
Browse latest Browse all 21942

Moveable, direction a wektor normalny

$
0
0

Siema,

kończę interfejs poruszania się Moveable i przyszła pora na metodę zwracającą kierunek zwrotu postaci. Jest ich osiem mianowicie: 

enum class Direction{
   UP = 0,
   UP_RIGHT = 1,
   //...
};

Kierunek jest zwracany na podstawie wartości wektora ruchu. Jest to wektor normalny(koordynaty € <-1, 1>, długość wektora = 1 zawsze). Moje pytanie. Jak najlepiej to zrealizować?

  1. Zwracać kierunek na podstawie kąta tworzonego z osią Ox:
    float angle = std::asin(/*sinus z "trójkąta" jaki tworzy wektor*/)
    
  2. Zwracać kierunek na podstawie wartości koordynatów i ich przynależności do przedziałów:
    if (moveVector.x > std::sqrt(2)/4 && moveVec/*....*/)
       return Direction::LEFT;
    else //...
    

W przypadku przedziałów musiałbym korzystać z wielu operacji z Math więc to jest czas (ewentualnie #define). Dla kątów musiałbym jeszcze rozpatrywać znaki koordynatów. Jakieś sugestie? wink

 

 


Viewing all articles
Browse latest Browse all 21942