Перейти к содержанию
Авторизация  

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

1 минуту назад, mumut сказал:

 

  Скрыть контент


	float Get3dDistance(float myCoordsX, float myCoordsY, float myCoordsZ, 
                        float enCoordsX, float enCoordsY, float enCoordsZ)
	{
		return sqrt(pow(double(enCoordsX - myCoordsX), 2.0) +
					pow(double(enCoordsY - myCoordsY), 2.0) +
					pow(double(enCoordsZ - myCoordsZ), 2.0));
	}

 

 

Длина вектора в трёхмерном пространстве. Две точки и у каждой по 3 координаты, ну тут в коде всё уже написано :D
Ну, а  Pow это возведение в степень , в данном случае в квадрат

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
4 часа назад, Senpai сказал:

Не думаю, что будет что-то подходящее. Тут лучше самому подумать. Вот 32750 это π . тогда 32750/π мы получаем какое-то число . если на него поделить число из игры, то получим значение в радианах

Если 32750 это число пи тогда зачем 32750 делить на 32750 ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
37 минут назад, mumut сказал:

Если 32750 это число пи тогда зачем 32750 делить на 32750 ?

Возьмём число из игры. Обозначим его "K".

 

K/π=F=32750/3,14=10424,6 это константа будет.

F это хз, как обозначить, но по логике должно быть так.(это отношение половины круга в игровых значениях к половине круга в радианах.)

Если прочитать из игры какое-то значение и разделить на F, то ты получишь угол в радианах.

S -угол в радианах

K/F=S

А если взять угол в радианах и умножить на F ,то получишь игровые значения

S*F=K

 

Изменено пользователем Senpai
  • Плюс 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 24.03.2019 в 17:57, mumut сказал:

"от -32750 до +32750" а по Y "от -16385 до +16385"

Вопрос эти значения игровые?

Или ты их получаешь из своего кода? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
24 минуты назад, Garik66 сказал:

Вопрос эти значения игровые?

Товарищ говорил, что да

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
10 часов назад, Garik66 сказал:

Вопрос эти значения игровые?

Да, это диапазон поворота камеры "от -32750 до +32750" это по X а это по Y "от -16385 до +16385" 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
20 часов назад, Senpai сказал:

Возьмём число из игры

Можешь помочь решить мою проблему. Она состоит в том что камера не поворачивается по Y. По твоей формуле я сделал чучуть поменял функцию вот так:

Спойлер

void CalcAngle_Test(float *myCoords, float * enCoords, float *angles)
{
	float delta[3] = { (myCoords[0] - enCoords[0]), (myCoords[1] - enCoords[1]), (myCoords[2] - enCoords[2]) };
	float hyp = sqrt(delta[0] * delta[0] + delta[1] * delta[1]);
	angles[0] = (float)(asinf(delta[2] / hyp) * 5215.5f); // как я понял это значение записывается в Y поворот "16385/3.14"
	angles[1] = (float)(atanf(delta[1] / delta[0]) * 10427.8f); // а это значение записывается в X поворот "32750/3.14"

	if (delta[0] >= 0.0)
	{
		angles[1] += 32760.0f;
	}
}

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, mumut сказал:

мою проблему.

Сам пишешь:

 

В 25.03.2019 в 05:38, mumut сказал:

Поворот камеры в игре типа 4 байт.Поэтому такие значения. Так сделал разработчик.

При этом рассчитываешь во float

    angles[0] = (float)(asinf(delta[2] / hyp) * 5215.5f); // как я понял это значение записывается в Y поворот "16385/3.14"
    angles[1] = (float)(atanf(delta[1] / delta[0]) * 10427.8f); // а это значение записывается в X поворот "32750/3.14"

тебе нужно сначала рассчитать углы в радианах и только потом умножать на коэффициенты для перевода в игровые (4-байтные) значения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, Garik66 сказал:

тебе нужно сначала рассчитать углы в радианах

Так я не могу понять как найти и рассчитать этот самый угол на который надо повернуть камеру.

5 минут назад, Garik66 сказал:

При этом рассчитываешь во float

Да но потом я перевожу в 4 байта. Если бы я не переводил то скорее всего у меня прицел поворачивал в какую то не понятную сторону а у меня не поворачивает только по Y координате

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 минут назад, mumut сказал:

Так я не могу понять как найти и рассчитать этот самый угол

Нарисуй 

Спойлер

image.thumb.png.798982b05657666a695f5bee02f24665.png

и вспомни (загугли) тригонометрию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, mumut сказал:

angles[0] = (float)(asinf(delta[2] / hyp) * 5215.5f); // как я понял это значение записывается в Y поворот "16385/3.14"
angles[1] = (float)(atanf(delta[1] / delta[0]) * 10427.8f); // а это значение записывается в X поворот "32750/3.14"

везде должно быть 10427.8f

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, Senpai сказал:

везде должно быть 10427.8f

А почему, просто же диапазон Y равен от -16385 до +16385. Да даже когда я ставил 10427.8f ничего не изменялось вообще.

Изменено пользователем mumut

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
16 минут назад, mumut сказал:

А почему, просто же диапазон Y равен от -16385 до +16385. 

Т.к. единица измерения та же.
А значения записываешь, как 4 байта ?(читать тоже надо, как 4 байта)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
16 минут назад, Senpai сказал:

(читать тоже надо, как 4 байта)

Что читать ? координаты в типе float а поворот в типе 4 байта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, mumut сказал:

Что читать ? координаты в типе float а поворот в типе 4 байта.

Я про углы говорю. Читаешь 4 байта, переводишь в float, делаешь вычисления ,а потом переводишь обратно и записываешь 4 байта.

Ну ты понял ;D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, Senpai сказал:

Я про углы говорю. Читаешь 4 байта

Самое интересное что в проекте нет строчки прочтения поворота камеры.

Ну ты понял ;D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, mumut сказал:

Самое интересное что в проекте нет строчки прочтения поворота камеры.

Я его не смотрел8-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
26 минут назад, Senpai сказал:

Читаешь 4 байта, переводишь в float, делаешь вычисления ,а потом переводишь обратно и записываешь 4 байта.

angles[0] = (float)(asinf(delta[2] / hyp) * 5215.5f); // как я понял это значение записывается в Y поворот "16385/3.14"
angles[1] = (float)(atanf(delta[1] / delta[0]) * 10427.8f); // а это значение записывается в X поворот "32750/3.14"

То есть в angles[0] и angles[1] значение которое надо добавить в текущему повороту а не записать в поворот камеры или нет ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

2 часа назад, mumut сказал:

angles[0] = (float)(asinf(delta[2] / hyp) * 5215.5f); // как я понял это значение записывается в Y поворот "16385/3.14"
angles[1] = (float)(atanf(delta[1] / delta[0]) * 10427.8f); // а это значение записывается в X поворот "32750/3.14"

То есть в angles[0] и angles[1] значение которое надо добавить в текущему повороту а не записать в поворот камеры или нет ?

Спойлер

f2jrqyugathrdarh.jpg 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
10 часов назад, Senpai сказал:

 

12 часов назад, mumut сказал:

angles[0] = (float)(asinf(delta[2] / hyp) * 5215.5f); // как я понял это значение записывается в Y поворот "16385/3.14"
angles[1] = (float)(atanf(delta[1] / delta[0]) * 10427.8f); // а это значение записывается в X поворот "32750/3.14"

То есть в angles[0] и angles[1] значение которое надо добавить в текущему повороту а не записать в поворот камеры или нет ?

  Показать контент

f2jrqyugathrdarh.jpg 

 

 

 

Прости что спросил просто я уже поплыл с этим аимботом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

×

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

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