Перейти к содержимому
  • 0
Syabro

Камера Computronics, вопрос по определению координат

Вопрос

Всем привет! Недавно мне понадобилось использовать камеру из Computrnics'а. Немного по мучавшись, с неточным определением координат, я все таки решил написать сюда, в надежде на то что здешние светлые умы мне помогут. В общем для тех кто еще не понял что я хочу: получая с камеры расстояние до объекта, мне нужно получить его координаты относительно координат камеры (иначе никак..). Для двух измерений все работает достаточно точно, но когда появляется третее - все идет на перекосяк т.к. я не знаю как учесть 2-й угол..

 

Код, который уже есть:

local camera
local cCords = {x = 0, y = 0, z = 0}
local tCords = {{}}
local res, count = 0.25, 1
local distance

for x = -1, 1, res do
  for y = -1, 1, res do
    distance = camera.distance(x,y)
    if distance >= 0 then
      tCords[count][x] = cCords[x] + distance*math.cos(x)
      tCords[count][y] = cCords[y] + distance*math.sin(x)
      tCords[count][z] = ?
      count = count + 1
    end
  end
end

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


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

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

Надо учитывать, что координаты камеры и объекта (X,Y,Z) представляются в декартовых координатах, а координаты объекта относительно камеры (distance,x,y) - в сферических.

Попробуй так:

      tCordsX = cCordsX + distance*math.cos(x)*math.cos(y)
      tCordsY = cCordsY + distance*math.sin(y)
      tCordsZ = cCordsZ + distance*math.sin(x)*math.cos(y) 

Возможно придется поиграться с ориентацией камеры.

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


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

Надо учитывать, что координаты камеры и объекта (X,Y,Z) представляются в декартовых координатах, а координаты объекта относительно камеры (distance,x,y) - в сферических.

Попробуй так:

      tCordsX = cCordsX + distance*math.cos(x)*math.cos(y)
      tCordsY = cCordsY + distance*math.sin(y)
      tCordsZ = cCordsZ + distance*math.sin(x)*math.cos(y) 

А разве по Y учитывать второй угол не надо?

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


Ссылка на сообщение
Поделиться на других сайтах
А разве по Y учитывать второй угол не надо?
Не надо. Почитай википедию "Сферическая система координат"

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


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

Не надо. Почитай википедию "Сферическая система координат"

Спасибо! Буду тестить. Как появится рабочая программа - скину.

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


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