расчет новой position [РЕШЕНО]

Программирование на Юнити.

расчет новой position [РЕШЕНО]

Сообщение BlackMamba 08 мар 2011, 22:22

прошу ногами не пинать, запутался в кватернионах, позициях и скриптинг-референсе,
как получить новую позицию, если текущую подвинуть в заранее определенном направлении на заранее известное расстояние. Именно получить Vector3, а не подвинуть объект :-s
Последний раз редактировалось BlackMamba 09 мар 2011, 20:18, всего редактировалось 1 раз.
mail: _gdeMoiGusi@gmail.com
skype: Ellseworth
Аватара пользователя
BlackMamba
UNITрон
 
Сообщения: 305
Зарегистрирован: 06 янв 2011, 16:16
Откуда: Москва

Re: расчет новой position

Сообщение wwtarasww 08 мар 2011, 22:34

ви наверное присваеваите объекту новую позицию, тоесть нужний Vector3...
ИзображениеИзображениеИзображениеИзображение
wwtarasww
UNIт
 
Сообщения: 135
Зарегистрирован: 28 фев 2011, 21:19
Откуда: Ukraine

Re: расчет новой position

Сообщение BlackMamba 08 мар 2011, 23:09

ну да, а как ее определить-то, новую позицию=), исходя из кватерниона и дистанции?
mail: _gdeMoiGusi@gmail.com
skype: Ellseworth
Аватара пользователя
BlackMamba
UNITрон
 
Сообщения: 305
Зарегистрирован: 06 янв 2011, 16:16
Откуда: Москва

Re: расчет новой position

Сообщение WhiteDevil 08 мар 2011, 23:42

А зачем вам кватернион? Кватернионы для вращений, а вам нужны векторы :) Если у вас есть нормализированное направление. Умножаете его на расстояние, которое хотите преодолеть. Полученный вектор локален. Его просто нужно добавить к текущей позиции. Если я не то говорю, то значит вы непонятно написали :)
Аватара пользователя
WhiteDevil
UNIверсал
 
Сообщения: 455
Зарегистрирован: 19 дек 2010, 15:55

Re: расчет новой position

Сообщение BlackMamba 08 мар 2011, 23:54

спасибо, попробуем
mail: _gdeMoiGusi@gmail.com
skype: Ellseworth
Аватара пользователя
BlackMamba
UNITрон
 
Сообщения: 305
Зарегистрирован: 06 янв 2011, 16:16
Откуда: Москва

Re: расчет новой position

Сообщение alexz 09 мар 2011, 00:29

BlackMamba писал(а):как получить новую позицию, если текущую подвинуть в заранее определенном направлении на заранее известное расстояние

Такое в школе проходят в классе 8–9. Сложение векторов называется: AB + BC = AC. Найти вектор AC, если AB и BC известны.
alexz
UNITрон
 
Сообщения: 270
Зарегистрирован: 16 ноя 2010, 23:37

Re: расчет новой position

Сообщение BlackMamba 09 мар 2011, 13:50

alexz писал(а):Такое в школе проходят в классе 8–9. Сложение векторов называется: AB + BC = AC. Найти вектор AC, если AB и BC известны.

vekctor3 - это, вроде как, и не вектор даже :-\ : Vector3(x,y,z) - где вы тут нашли координаты второй точки вектора? вектор же двумя точками задается? Ну даже, если это (0,0,0), вы меня, наверно, не правильно поняли, исходя их вашей формулы мне нужно найти точку С.
mail: _gdeMoiGusi@gmail.com
skype: Ellseworth
Аватара пользователя
BlackMamba
UNITрон
 
Сообщения: 305
Зарегистрирован: 06 янв 2011, 16:16
Откуда: Москва

Re: расчет новой position

Сообщение alexz 09 мар 2011, 14:21

BlackMamba писал(а):
alexz писал(а):Такое в школе проходят в классе 8–9. Сложение векторов называется: AB + BC = AC. Найти вектор AC, если AB и BC известны.

vekctor3 - это, вроде как, и не вектор даже :-\ : Vector3(x,y,z) - где вы тут нашли координаты второй точки вектора? вектор же двумя точками задается? Ну даже, если это (0,0,0), вы меня, наверно, не правильно поняли, исходя их вашей формулы мне нужно найти точку С.

У векторов есть только длина и направление, вторая точка не нужна. Вектор в пространстве от координат точки в пространстве отличается только названием. На практике это одно и то же.

Точка А ― начало координат.
Координаты точки B ― это вектор АB.
Координаты точки С ― это вектор АС.
alexz
UNITрон
 
Сообщения: 270
Зарегистрирован: 16 ноя 2010, 23:37

Re: расчет новой position

Сообщение seaman 09 мар 2011, 14:59

Уточним.
Вектор действительно задается направлением и длиной. Его можно задать несколькими способами, например двумя углами и длиной. Также двумя точками - началом и концом. Однако поскольку для вектора неважно где находится его начало, математики условились у всех векторов за начало считать начало координат (0, 0, 0). Поэтому достаточно указать только его конец (координаты конца).
Вектор в пространстве от координат точки в пространстве отличается только названием.

Ну не совсем. Для координат, например, не определено векторное произведение...

Скорее так - положение точки в пространстве можно задать вектором.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: расчет новой position

Сообщение alexz 09 мар 2011, 19:42

seaman писал(а):
Вектор в пространстве от координат точки в пространстве отличается только названием.

Ну не совсем. Для координат, например, не определено векторное произведение...

Для координат точки не определено. Не трогая сами координаты, меняешь слово «точка» на «вектор», и становится определено. Я про это и говорю, что на практике отличие только в названии.

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

А вектор положением в пространстве точки относительно начала координат или любой другой точки. Баш на баш.
alexz
UNITрон
 
Сообщения: 270
Зарегистрирован: 16 ноя 2010, 23:37

Re: расчет новой position

Сообщение BlackMamba 09 мар 2011, 19:56

ну так как мне найти координаты С? :-? , допустим у ВС начало координат это localPosition, так как мне, зная направление и дистанцию, найти С :) я имею ввиду спомощью методов [unity 3D]
mail: _gdeMoiGusi@gmail.com
skype: Ellseworth
Аватара пользователя
BlackMamba
UNITрон
 
Сообщения: 305
Зарегистрирован: 06 янв 2011, 16:16
Откуда: Москва

Re: расчет новой position

Сообщение alexz 09 мар 2011, 20:06

Сложением векторов. Оператором сложения. Значком «+».

Синтаксис:
Используется csharp
Vector3 исходноеПоложение = new Vector3(123, 234, 345);
Vector3 смещение = new Vector3(11, 22, 33);
Vector3 конечноеПоложение = исходноеПоложение + смещение;
alexz
UNITрон
 
Сообщения: 270
Зарегистрирован: 16 ноя 2010, 23:37

Re: расчет новой position

Сообщение BlackMamba 09 мар 2011, 20:17

да это понятно, вы это уже написали словами....
натолкнуло на такое решение:
повесить на вращающийся объект пустышку, задать дистанцию через localPosition и читать его posotion.

как вычислить новую позицию, зная исходную позицию, направление и дистанцию смещения никто так и не сказал....а может я не туда смотрел, так что извиняйте
mail: _gdeMoiGusi@gmail.com
skype: Ellseworth
Аватара пользователя
BlackMamba
UNITрон
 
Сообщения: 305
Зарегистрирован: 06 янв 2011, 16:16
Откуда: Москва

Re: расчет новой position [РЕШЕНО]

Сообщение alexz 09 мар 2011, 20:46

Старая позиция ― это вектор. Смещение ― это вектор. Новая позиция ― это вектор.

Новая позиция = старая позиция + смещение.
alexz
UNITрон
 
Сообщения: 270
Зарегистрирован: 16 ноя 2010, 23:37

Re: расчет новой position [РЕШЕНО]

Сообщение BlackMamba 09 мар 2011, 20:54

да я вас понял, проблема в расчете смещения, именно его и надо посчитать, то есть не переместить объект с помощью transform.Translate, а вычислить будущую позицию, как если бы объект бы перемещен в заданном направлении, которое определяется в rotation и на заданную дистанцию.
mail: _gdeMoiGusi@gmail.com
skype: Ellseworth
Аватара пользователя
BlackMamba
UNITрон
 
Сообщения: 305
Зарегистрирован: 06 янв 2011, 16:16
Откуда: Москва

След.

Вернуться в Скрипты

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

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