Для чего нужны Vector3.magnitude,Dot,Normalize?

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Для чего нужны Vector3.magnitude,Dot,Normalize?

Сообщение Chaz 15 июл 2013, 19:35

Прив. Смотрите. Ведь магнитуда это длина от нулевых координат до точки, например, магнитуда Vector3(2,0,0) будет равна 2, зачем это нужно и как это можно использовать?
Что такое Dot? я-то прочитал в документации, че-то там с косинусами, но как я понял, Dot это что-то типа продукта умножения двух векторов, то есть Dot((1,2,2),(2,1,1)) = (1*2)+(2*1)+(2*1)=6, но опять же, я не понимаю, зачем это нужно и как это можно использовать?
Ну а на счет Normalize вроде понел. Нормализированый вектор это же вектор с магнитудой равной единице, значит такой вектор можна называть - "вектор направления" и с его помощью передвигать предметы в нужную сторону и если умножить вектор на нужное число, то можно регулировать скорость перемещения, я прав?
Chaz
Адепт
 
Сообщения: 1412
Зарегистрирован: 07 апр 2012, 11:24

Re: Для чего нужны Vector3.magnitude,Dot,Normalize?

Сообщение Diab10 15 июл 2013, 19:37

Хорошая статья про вектора:
http://habrahabr.ru/post/131931/


Я тоже в векторах не смыслю.
При помощи магнитуды я нахожу скорость автомобиля: target.rigidbody.velocity.magnitude
Аватара пользователя
Diab10
Адепт
 
Сообщения: 3401
Зарегистрирован: 17 мар 2011, 20:42
Откуда: 123 RUS
Skype: diab1023

Re: Для чего нужны Vector3.magnitude,Dot,Normalize?

Сообщение nile 15 июл 2013, 19:49

Vector3.magnitude - модуль вектора m=sqrt(x^2+y^2+Z^2);
Vector3.Dot(Vector1,Vector2) скалярное произведение 2х векторов
Vector3.Normalized - Вектор, сонаправленный с исходным, но имеющий модуль = 1

И вообще http://docs.unity3d.com/Documentation/ScriptReference/ для кого написан? Ведь достаточно в гугл вбить, первой же строчкой ответ!
Аватара пользователя
nile
Старожил
 
Сообщения: 848
Зарегистрирован: 25 фев 2011, 17:17

Re: Для чего нужны Vector3.magnitude,Dot,Normalize?

Сообщение Chaz 15 июл 2013, 19:52

nile писал(а):Vector3.magnitude - модуль вектора m=sqrt(x^2+y^2+Z^2);
Vector3.Dot(Vector1,Vector2) скалярное произведение 2х векторов
Vector3.Normalized - Вектор, сонаправленный с исходным, но имеющий модуль = 1

И вообще http://docs.unity3d.com/Documentation/ScriptReference/ для кого написан? Ведь достаточно в гугл вбить, первой же строчкой ответ!

А я вопрос для кого писал? Я спросил, как это используется и почему?
Chaz
Адепт
 
Сообщения: 1412
Зарегистрирован: 07 апр 2012, 11:24

Re: Для чего нужны Vector3.magnitude,Dot,Normalize?

Сообщение Chaz 15 июл 2013, 19:57

Diab10 писал(а):Хорошая статья про вектора:
http://habrahabr.ru/post/131931/


Я тоже в векторах не смыслю.
При помощи магнитуды я нахожу скорость автомобиля: target.rigidbody.velocity.magnitude

че-т не понятно, как находится эта скорость, если магнитуда эт длина от нулевой точки до другой точки, ну до позиции автомобиля, я так понел, в вашем случае.
Chaz
Адепт
 
Сообщения: 1412
Зарегистрирован: 07 апр 2012, 11:24

Re: Для чего нужны Vector3.magnitude,Dot,Normalize?

Сообщение Diab10 15 июл 2013, 20:00

Chaz писал(а):
Diab10 писал(а):Хорошая статья про вектора:
http://habrahabr.ru/post/131931/


Я тоже в векторах не смыслю.
При помощи магнитуды я нахожу скорость автомобиля: target.rigidbody.velocity.magnitude

че-т не понятно, как находится эта скорость, если магнитуда эт длина от нулевой точки до другой точки, ну до позиции автомобиля, я так понел, в вашем случае.


Не знаю как, в основы не залазил :D
Знаю, что это скорость :))
Аватара пользователя
Diab10
Адепт
 
Сообщения: 3401
Зарегистрирован: 17 мар 2011, 20:42
Откуда: 123 RUS
Skype: diab1023

Re: Для чего нужны Vector3.magnitude,Dot,Normalize?

Сообщение seaman 15 июл 2013, 20:02

магнитуда эт длина от нулевой точки до другой точки, ну до позиции автомобиля

(полная Ж)
Магнитуда - это длина вектора. Что представляет вектор - неважно. Позиция, скорость, ускорение или вообще что Вам придет в голову, что можно выразить двумя/тремя связанными числами.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Для чего нужны Vector3.magnitude,Dot,Normalize?

Сообщение WhiteDevil 15 июл 2013, 20:10

magnitude - применяешь когда нужно высчитать расстояние между двумя позициями. Между двумя игровыми объектами к примеру:
(pos1- pos2).magnitude

normalize(vec1, vec2) = (vec1 + vec2) / (vec1 + vec2).magnitude.
Применяется в действительности, как пример, для задания направления. Собственно, направление можно задать и не нормализировав, просто магнитуда вектора может исказить результат, это зависит от вычислений.
Например, умножив нормализированный вектор (направление) на значение (скорость), ты получишь позицию объекта, в который он попадет.

Тоже самое - говоря о dot. Dot(vec1, vec2) = COS(угол между векторами) * vec1.magnitude * vec2.magnitude.
Применяется в случаях, если в зависимости от угла между двумя векторами меняется интенсивность какого-то значения.
Например, пишем шейдер освещения для объекта-сферы. В точке прямого попадания света (когда нормаль полигона смотрит прямо в направлении источника света) - продукт dot является максимальным. А в местах позади или сбоку сферы, этот продукт минимален, так как угол между нормалью и источником света очень большой. Вот так и делается рассеянное освещение.
Последний раз редактировалось WhiteDevil 15 июл 2013, 20:16, всего редактировалось 1 раз.
Аватара пользователя
WhiteDevil
UNIверсал
 
Сообщения: 455
Зарегистрирован: 19 дек 2010, 15:55

Re: Для чего нужны Vector3.magnitude,Dot,Normalize?

Сообщение Chaz 15 июл 2013, 20:14

seaman писал(а):
магнитуда эт длина от нулевой точки до другой точки, ну до позиции автомобиля

(полная Ж)
Магнитуда - это длина вектора. Что представляет вектор - неважно. Позиция, скорость, ускорение или вообще что Вам придет в голову, что можно выразить двумя/тремя связанными числами.

но она же вот так считается. Вообще не представляю, как из позиции или скорости можно узнать длину >.<
У вас нет доступа для просмотра вложений в этом сообщении.
Chaz
Адепт
 
Сообщения: 1412
Зарегистрирован: 07 апр 2012, 11:24

Re: Для чего нужны Vector3.magnitude,Dot,Normalize?

Сообщение Chaz 15 июл 2013, 20:17

WhiteDevil писал(а):magnitude - применяешь когда нужно высчитать расстояние между двумя позициями. Между двумя игровыми объектами к примеру:
(pos1- pos2).magnitude

normalize(vec1, vec2) = (vec1 + vec2) / (vec1 + vec2).magnitude.
Применяется в действительности, как пример, для задания направления. Собственно, направление можно задать и не нормализировав, просто магнитуда вектора может исказить результат, это зависит от вычислений.
Например, умножив нормализированный вектор (направление) на значение (скорость), ты получишь позицию объекта, в который он попадет.

Тоже самое - говоря о dot. Dot(vec1, vec2) = COS(угол между векторами) * vec1.magnitude * vec2.magnitude.
Применяется в случаях, если в зависимости от угла между двумя векторами меняется интенсивность какого-то значения.
Например, пишем шейдер освещения для объекта-сферы. В точке прямого попадания света (когда нормаль полигона смотрит прямо в направлении источника света) - продукт dot является максимальным. А в местах позади или сбоку сферы, этот продукт минимален, так как угол между нормалью и источником света очень большой. Вот так и делается рассеянное освещение.

посибо
Chaz
Адепт
 
Сообщения: 1412
Зарегистрирован: 07 апр 2012, 11:24

Re: Для чего нужны Vector3.magnitude,Dot,Normalize?

Сообщение WhiteDevil 15 июл 2013, 20:20

Я надеюсь, что не зря писал это все :)
По поводу вашего рисунка, магнитуда это длина вашего С. Если приложить линейку и подсчитать.
А по поводу скорости и позиции, я сказал выше.
Если ваш объект находится в нуле, где C - скорость, а нормализированный вектор направления это (1,1), то перемножив, вы получите (5,5). А С - расстояние, которое он пройдет
Аватара пользователя
WhiteDevil
UNIверсал
 
Сообщения: 455
Зарегистрирован: 19 дек 2010, 15:55

Re: Для чего нужны Vector3.magnitude,Dot,Normalize?

Сообщение Chaz 15 июл 2013, 20:26

WhiteDevil писал(а):Я надеюсь, что не зря писал это все :)
По поводу вашего рисунка, магнитуда это длина вашего С. Если приложить линейку и подсчитать.
А по поводу скорости и позиции, я сказал выше.
Если ваш объект находится в нуле, где C - скорость, а нормализированный вектор направления это (1,1), то перемножив, вы получите (5,5). А С - расстояние, которое он пройдет

ясно, спс ХД
Chaz
Адепт
 
Сообщения: 1412
Зарегистрирован: 07 апр 2012, 11:24


Вернуться в Почемучка

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

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