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

Раздел, посвящённый всему, что связано с программированием для Редактора Юнити. Скрипты Редактора, Wizards и прочее.

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

Сообщение hotabsc 02 июн 2019, 11:14

Здравствуйте!

Какие можно придумать обратные функции перевода полученных двух координат (долгота и широта) в локальные?
Благодаря 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;
// перевести из координат широты и долготы в локальные
// ??????
 
hotabsc
UNец
 
Сообщения: 7
Зарегистрирован: 02 июн 2019, 11:07

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

Сообщение waruiyume 02 июн 2019, 11:33

Локальные относительно чего?
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

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

Сообщение hotabsc 02 июн 2019, 11:48

waruiyume писал(а):Локальные относительно чего?

Относительно GameObject.
Мне не нужен перевод МИРОВЫХ координат в ЛОКАЛЬНЫЕ относительно GameObject, а перевод координат ШИРОТЫ и ДОЛГОТЫ в ЛОКАЛЬНЫЕ.
То есть по сути обратные формулы приведенных в коде. Может что-то придет в голову Вам. Благодарю
hotabsc
UNец
 
Сообщения: 7
Зарегистрирован: 02 июн 2019, 11:07

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

Сообщение waruiyume 02 июн 2019, 12:06

https://ru.wikipedia.org/wiki/Сферическая_система_координат
Переход к другим системам координат
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

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

Сообщение hotabsc 02 июн 2019, 13:34

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);
 

Все совпадает, но теперь сферические координаты слишком малы, решаю теперь эту проблему.
hotabsc
UNец
 
Сообщения: 7
Зарегистрирован: 02 июн 2019, 11:07

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

Сообщение samana 02 июн 2019, 14:13

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

Скорее всего будет достаточно умножить результат на радиус планеты.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

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

Сообщение hotabsc 02 июн 2019, 15:32

Вопрос закрыт.
Чтобы числа были не в диапазоне от -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;
 
hotabsc
UNец
 
Сообщения: 7
Зарегистрирован: 02 июн 2019, 11:07


Вернуться в Editor

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2