Страница 1 из 1

Координаты планеты в локальные

СообщениеДобавлено: 02 июн 2019, 11:14
hotabsc
Здравствуйте!

Какие можно придумать обратные функции перевода полученных двух координат (долгота и широта) в локальные?
Благодаря Storm23 у меня есть только функции из локальных координат в координаты планеты
Синтаксис:
Используется csharp
var r = transform.InverseTransformPoint(point);
// перевод из локальных в координаты широты и долготы
var lon = Mathf.Atan2(r.z, r.x) * Mathf.Rad2Deg;
var lat = Mathf.Atan2(r.y, Mathf.Sqrt(r.x * r.x + r.z * r.z)) * Mathf.Rad2Deg;
// перевести из координат широты и долготы в локальные
// ??????
 

Re: Координаты планеты в локальные

СообщениеДобавлено: 02 июн 2019, 11:33
waruiyume
Локальные относительно чего?

Re: Координаты планеты в локальные

СообщениеДобавлено: 02 июн 2019, 11:48
hotabsc
waruiyume писал(а):Локальные относительно чего?

Относительно GameObject.
Мне не нужен перевод МИРОВЫХ координат в ЛОКАЛЬНЫЕ относительно GameObject, а перевод координат ШИРОТЫ и ДОЛГОТЫ в ЛОКАЛЬНЫЕ.
То есть по сути обратные формулы приведенных в коде. Может что-то придет в голову Вам. Благодарю

Re: Координаты планеты в локальные

СообщениеДобавлено: 02 июн 2019, 12:06
waruiyume
https://ru.wikipedia.org/wiki/Сферическая_система_координат
Переход к другим системам координат

Re: Координаты планеты в локальные

СообщениеДобавлено: 02 июн 2019, 13:34
hotabsc
waruiyume писал(а):https://ru.wikipedia.org/wiki/Сферическая_система_координат
Переход к другим системам координат

Благодарю.
Понял, что мне нужно переводить из сферических координат в цилиндрическую систему координат.
Изменил свой код и добавил конвертацию:
Синтаксис:
Используется csharp
// нахождение сферических координат
var lon = Mathf.Atan2(r.x, r.z);
var lat = Mathf.Sqrt(r.x * r.x + r.z * r.z);
 
// перевод из сферических в локальные (в цилиндрическую систему координат)
var lonConvert = lat * Mathf.Sin(lon);
var latConvert = lat * Mathf.Cos(lon);
 

Все совпадает, но теперь сферические координаты слишком малы, решаю теперь эту проблему.

Re: Координаты планеты в локальные

СообщениеДобавлено: 02 июн 2019, 14:13
samana
hotabsc писал(а):Все совпадает, но теперь сферические координаты слишком малы, решаю теперь эту проблему.

Скорее всего будет достаточно умножить результат на радиус планеты.

Re: Координаты планеты в локальные

СообщениеДобавлено: 02 июн 2019, 15:32
hotabsc
Вопрос закрыт.
Чтобы числа были не в диапазоне от -1 до 1, следует использовать перевод в градусов в радианы, а для конвертации наоборот!
Если кому-то в дальнейшем поможет:
Синтаксис:
Используется csharp
    float lon = Mathf.Atan2(r.x, r.z) * Mathf.Rad2Deg;
    float lat = Mathf.Sqrt(r.x * r.x + r.z * r.z) * Mathf.Rad2Deg;
   
   float xLocal = Mathf.Sin(lon * Mathf.Deg2Rad) * lat * Mathf.Deg2Rad;
   float zLocal = Mathf.Cos(lon * Mathf.Deg2Rad) * lat * Mathf.Deg2Rad;