Эти ваши формулы и немного наглядных рисунков по телесайнсу.

Все переменные я обозначу буквами :
B : bearing
a : elevation
P : power

    Px: power, ось х, горизонтальная скорость
    Py: power, ось у, вертикальная скорость

Названия граф оставил английскими для тех, кто не умеет в английский.
В телесайнсе ось х и ось у полностью независимы, в отличии от GPS.
х - абсолютная длина, а у это высота, на которую “поднимается” объект. Мы знаем, что идеальный угол броска какого-либо снаряда равен 45 градусам. Угол броска можно считать графу Elevation. От нее, вместе с графой Power, зависит то, как далеко/откуда телепортируется объект.
Зная значение Elevation, мы можем найти Px и Py. Внизу нарисован “правильный” треугольник c гипотенузой Р, угол противоположен стороне Ру и смежен Рх:

          /|
         / |
       P/  |
       /   |Py
      /    |
     /     |
    /a___|
       Px

Форум пишет как-то криво, получилось так. Представьте, что все это ровно.

Увидев это, мы можем найти отношение между этими переменными(наши любимые косинусы/синусы):
Px = Pcos(a)
Py = P
sin(a)
Но это все начальные законы баллистики. Я не написал о том, что телепорт как пушка, а предмет как снаряд, скорость полета снаряда и дальность зависит от законов баллистики.
Баллистическая траектория у телесайнса будет выглядеть примерно так:
Средняя точка
*
* *
* *

                    *                             *                
                                                                   
                                                                   
               *                                       *           
                                                                   
                                                                   
                                                                   
          *                                                 *      
                                                                   
                                                                   
                                                                   
     Точка запуска                                        Точка приземления        
     *                                                           * 

Точка запуска - начало телепортации, точка прилета - завершенная телепортация.
Средняя точка показывает время, сколько времени требуется для “взлета” объекта. Телепортация затрачивает время, да.
Время телепортации полностью зависит от времени, требуемого объекту “вылететь” и “прилететь” из места запуска в место приземления. Теперь, “гравитация” равна 10 и телепорту сначала требуется “кинуть” объект и “приземлить” его, что удваивает время. Всмысле, требуется одно и тоже время для взлета и для приземления объекта.

    t: время
    t = 2*Py/10
      = 1/5 * Py

Также, пройденная горизонтальная дистанция это отдача х, скорость объекта остается той же самой весь путь:
d: дистанция
d = t * Px = 1/5 * Px * Py
= 1/5 * Pcos(a) * Psin(a)
= 1/5 * P^2*sin(a)cos(a)

    d = 1/10 * P^2*2sin(a)cos(a)
      = 1/10 * P^2*sin(2*a)

Формула “двух углов” радикально показывает, что нам нужно знать. Это работает на интуитивной основе, когда значение Elevation от 1 до 90. При значении Elevation 90 мы кидаем предмет ровно вверх и он возвращается на ту же точку: sin(290)=sin(180)=0.
Еще это работает с градусом 45 - sin(2
45)=sin(90)=1, все это значит то, что это максимальное, что может выдать функция синуса.

Теперь мы знаем, как найти дистанцию. Сейчас нам нужно применить это к телепорту. Для телепорта нам нужна магнитуда и дистанция. Магнитуда определяется числом Elevation и числом Power, что дает нам как далеко телепортируется объект. А Bearing находим с помощью удаленных координат, которые мы должны знать.
Вот отношение:
x : x дистанция от телепорта (может быть отрицательным)
y : y дистанция от телепорта (может быть отрицательным)
B : bearing (может быть отрицательным)
B = arctan(x/y)

                                     0град. ^   x                            
                                         |--------/                        
                                         |        /                         
                                         |      /                          
                                         |     /                           
                                       y |    /d                           
                                         |   /                             
                                         |  /                              
                                         |B/                               
                                         |/                          90град.
    <--------------------------------------------------------------------> 
    270град.                          l                               
                                         |                                 
                                         |                                 
                                         |                                 
                                         |                                 
                                         |                                 
                                         |                                 
                                         |                                 
                                         |                                 
                                         |                                 
                                         v 180град

Запомним квадрант, когда тангенс становится противоположным. С тех пор, как дистанция уже не может быть отрицательной, нужно узнать правильный Bearing. Если квадрант угла неправильный, то нужно просто прибавить или вычесть 180.
Но у нас также есть и погрешность. Погрешность быстро вычислить нереально, нам для точной погрешности потребуется пара тестов и много вычислений.

Вот примерно так. Понять трудно, но полезно. У меня есть код для калькулятора бея, спер с гитхуба. Кому нужно, скину(есть еще на тг). Впрочем, если не трудно, оцените старания в плане поиска и писанины плюсом.

2 лайка