У меня есть вектор A, представленный углом и длиной. Я хочу добавить вектор B, обновив исходный A. B получен из справочной таблицы, чтобы его можно было представить, каким образом облегчая вычисления.
В частности, A определяется следующим образом:
uint16_t A_angle; // 0-65535 = 0-2π
int16_t A_length;
Аппроксимации в порядке. Проверка на переполнение не требуется. Доступно быстрое приближение sin / cos.
Самый быстрый способ, который я могу себе представить, - это представить B как вектор-компонент, преобразовать A в компонент, добавить A и B, преобразовать результат обратно в угол / длину и заменить A. (Это требует добавления быстрого asin / экоса)
Я не особенно хорош в математике, и мне интересно, упускаю ли я более разумный подход?
В первую очередь я ищу общий подход, но конкретные ответы / комментарии по поводу полезной микрооптимизации в Си также интересны.