Ответы пользователя по тегу Тригонометрия
  • Как рассчитать полет снаряда в двумерном пространстве под наклоном?

    Две подзадачи:
    1. траектория полёта
    2. проекция на матрицу камеры
     

    1. Траектория
    • Вертикальная составляющая скорости снаряда линейно падает. Снаряд вернется на плоскую Землю, когда верхний зуб скорость станет равна начальной со знаком минус:
      график скорости и траектория
      5bbbaf41abc02901256019.png

    • Горизонтальная составляющая скорости снаряда остаётся неизменной, считаем, что пальба в вакууме.

    Разложили начальный вектор пальбы на верт. и гор. составляющие и получаете положение снаряда в любой момент времени в виде координат (x, y, z).

    2. Проекция
    Теперь надо любую точку в этом вашем мире спроецировать на экран, который под 45° к горизонтали. Не считаем, что объекты становятся меньше с удалением, что параллельные прямые сходятся в одной точке и т.п. Просто бросаем любую точку на экран, чтобы упала под прямым углом к плоскости экрана.

    Центр экрана будем считать, имеет координаты (0, 0) и смотрит точно на (0, 0, 0) трехмерного мирка. У экрана ось X вправо, ось Y вверх. В мирке ось x влево, ось y вверх, ось z вдаль.

    Смещение в мирке по x точно так же добавит X'у экранному.
    Смещение в 3D по y добавит экранном Y чуть меньше из-за угла в 45°. Т.е. y домножим на корень-из-2 пополам.
    То же со смещением по z.

    X = x;
    Y = (y + z) * 0.7071;


    Предлагаю вам самостоятельно объединить эти два откровения в работающий код.
    Ответ написан
    1 комментарий
  • Как зная координаты объекта в 2d плоскости, угол его в направления в радианах и скорость, рассчитать новые координаты через единицу времени?

    Путь = время * скорость
    1. Нашли длину, которую он пройдёт.
    2. Есть длина, есть угол – это вектор перемещения.
    3. Надо сложить векторы начального положения и перемещения.
    Новый_X = Старый_X + Путь * cos(угла)
    Новый_Y = Старый_Y + Путь * sin(угла)
    Ответ написан
    2 комментария
  • Как найти синус 10 градусов?

    Приближенные значения обычно смотрят в таблицах или получают в калькуляторах.

    Ещё есть такая формула (ряды Тейлора):
    sin(x) ~= x5/5! + x3/3! + x
    где x в радианах:
    9a5ff766043c4698a193c81dc7c06445.gif

    Если стоит задача именно без техники примерно найти sin(10°) можно воспользоваться бумагой, карандашом, линейкой и циркулем. sin() угла в прямоугольном треугольнике это отношение противолежащего катета к гипотенузе. Если нарисовать окружность радиуса 1, то sin() будет равен самой длине противолежащего катета.

    Нарисуйте окружность радиусом, скажем, 10 см (будем считать 1 = 10см). Отмерьте угол в 1/18 полукруга (прямой угол разделить на три части и ещё раз на три). Опустите перпендикуляр из точки на окружности на горизонтальную ось. Его длина, делёная на 10см будет значением синуса.
    Ответ написан
    6 комментариев