Перейти к содержанию

Тригонометрия для ESP


Рекомендуемые сообщения

Привет всем.

Делаю мини-карту по средствам D3D в CE. Нужно сделать авто-корректировку положения меток, при изменении угла поворота моего автомобиля.

Нужна формула вычисления текущего положения Х,Y оппонента относительно моего автомобиля, с учетом угла поворота.

 

Пробовал использовать следующий способ

 

Х1,Y1 - координаты моего автомобиля

Х2,Y2 - координаты автомобиля оппонента

Cos и Sin = значения угла поворота моего автомобиля от -1 до 1

 

Х = Х1 - Х2 (100 - 50 = 50)

Y = Y1 - Y2 (20 - 15 = 5)

X метки = Cos*X

Y метки = Sin*Y


 

При таком способе, при вращении на одном месте моего автомобиля, прямоугольник движется не по кругу но по элипсу (по овалу).

- Возьмём стоящий на месте автомобиль с таким углом поворота, при котором

Cos = 1

Sin = 0

X = *1*50 = 50

Y = 0*5 = 0

-А теперь повернем его на 180 градусов

Cos = -1

Sin = 0

X = -1*50 = -50

Y = 0*5 = 0

Вроде бы всё хорошо, при развороте на 180 метка удалилась в противоположную сторону на такое же расстояние от центра (на 50)

 

-Но если повернуть автомобиль на 90 градусов

Cos = 0

Sin = 1

X = 0*50 = 0

Y = 1*5 = 5

Получаем движение по элипсу.

 

Кто знает правильную формулу расчёта?

 

 

Изменено пользователем AntonVit
Ссылка на комментарий
Поделиться на другие сайты

Расчёт координат после изменения угла поворота объекта

x=x*cos-y*sin
y=x*sin+y*cosa

Скрытый текст

fld dword ptr [esi+1b0]
fsub dword ptr [OPON_1_D3D_X]
fstp dword ptr [OPONS_1_SAVER_SLOT_X]
fld dword ptr [esi+1b8]
fsub dword ptr [OPON_1_D3D_Y]
fstp dword ptr [OPONS_1_SAVER_SLOT_Y]
fld dword ptr [OPONS_1_SAVER_SLOT_X]
fmul dword ptr [MyCar_Cosinus_Memory]
fstp dword ptr [OPONS_SAVER_SLOT_Sometime_1]
fld dword ptr [OPONS_1_SAVER_SLOT_Y]
fmul dword ptr [MyCar_Sinus_Memory]
fstp dword ptr [OPONS_SAVER_SLOT_Sometime_2]
fld dword ptr [OPONS_1_SAVER_SLOT_X]
fmul dword ptr [MyCar_Sinus_Memory]
fstp dword ptr [OPONS_SAVER_SLOT_Sometime_3]
fld dword ptr [OPONS_1_SAVER_SLOT_Y]
fmul dword ptr [MyCar_Cosinus_Memory]
fstp dword ptr [OPONS_SAVER_SLOT_Sometime_4]
fld dword ptr [OPONS_SAVER_SLOT_Sometime_1]
fsub dword ptr [OPONS_SAVER_SLOT_Sometime_2]
fstp dword ptr [OPONS_1_SAVER_SLOT_X]
fld dword ptr [OPONS_SAVER_SLOT_Sometime_3]
fadd dword ptr [OPONS_SAVER_SLOT_Sometime_4]
fstp dword ptr [OPONS_1_SAVER_SLOT_Y]

 

Расчёт длины отрезка между двумя точками

√(x2−x1)2+(y2−y1)2 (где √ - квадратный корень, а ")2" - возведение в квадрат)

 

"Брекакалар"

Скрытый текст

 

 

Скрытый текст

 

 

 

Изменено пользователем AntonVit
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.