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ć?
- Zwracać kierunek na podstawie kąta tworzonego z osią Ox:
float angle = std::asin(/*sinus z "trójkąta" jaki tworzy wektor*/)
- 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?