Войти
ПрограммированиеФорумОбщее

Математика компьютерной игры

Страницы: 1 2 3 4 5 Следующая »
#0
15:21, 6 окт. 2011

Всем доброго дня!

Как известно, в результате векторного произведения векторов получается вектор, который перпендикулярен двум другим векторам, участвующих в произведении.

Изображение

Приведённый выше рисунок характерен для трёхмерных векторов. И рассчитывается новый вектор следующим образом:

Vector3 Vector3Cross(const Vector3& _vector1,const Vector3& _vector2)
{
    Vector3 vector(_vector1);

    vector.x=_vector1.y*_vector2.z-_vector1.z*_vector2.y;
    vector.y=_vector1.z*_vector2.x-_vector1.x*_vector2.z;
    vector.z=_vector1.x*_vector2.y-_vector1.y*_vector2.x;

    return vector;
}

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

А вот в случае четырёхмерного вектора, я не соображу как произвести это преобразование:

Vector4 Vector4Cross(const Vector4& _vector1,const Vector4& _vector2)
{
    Vector4 vector(_vector1);

    vector.x=... // Как?;
    vector.y=... // Как?;
    vector.z=... // Как?;
    vector.w=... // Как?;

    return vector;
}

#1
15:44, 6 окт. 2011

http://delphimaster.net/view/15-1194788752/4

#2
15:54, 6 окт. 2011

s3dworld
> А вот в случае четырёхмерного вектора, я не соображу как произвести это
> преобразование:
там результатом будет плоскость, а не вектор
для 4 мерного вектора считай векторное произведение по первым 3 координатам не учитывая четвертую

#3
16:07, 6 окт. 2011

s3dworld
а для каких целей в программировании нужно векторное произведение 4-мерных векторов?

#4
16:12, 6 окт. 2011

s3dworld
Всё очевидно, если знать, что такое детерминант матрицы и как его считать: http://en.wikipedia.org/wiki/Cross_product#Matrix_notation

#5
16:16, 6 окт. 2011

winky
Для познавательных. Я никак не могу себе представить в мозгу что такое 4-мерное пространство.

Skyblade
Нахождение детерминанта матриц -1 -2 -3 -4 порядка уже реализовал.

#6
16:24, 6 окт. 2011

Формула будет вот такая (прошу прощения за скрин, быстрее набрать не знал как)
4dcross | Математика компьютерной игры
l заменяем на w

#7
16:32, 6 окт. 2011

Skyblade
Если честно, то не понял что ты привёл, матрицы....

#8
17:00, 6 окт. 2011

s3dworld
> Если честно, то не понял что ты привёл, матрицы....
Да, это матрицы.
Вот исправленный вариант, ошибся со знаками:
cross | Математика компьютерной игры

s3dworld
> Нахождение детерминанта матриц -1 -2 -3 -4 порядка уже реализовал.
То есть нужно найти 4 детерминанта матриц 3 порядка.
Чтобы стало совсем понятно, приведу такой рисунок:
213 | Математика компьютерной игры

#9
17:26, 6 окт. 2011

Skyblade
Есть маленькая загвоздочка - у тебя в формуле c (и z) - это что такое? Третий вектор? А векторное произведение-то для двух считается.

#10
17:49, 6 окт. 2011

Wraith
> Есть маленькая загвоздочка - у тебя в формуле c (и z) - это что такое? Третий
> вектор? А векторное произведение-то для двух считается.
Просто так обобщить определение векторного произведения на четырёхмерное пространство для двух векторов не получится (кроме семимерного пространства http://en.wikipedia.org/wiki/Seven_dimensional_cross_product). Я нашёл интересную статью, где говорится, почему это так и как это можно обойти, если ввести понятие 'искусственного' векторного произведения (но даже в этом случае в результате перемножения получится не 1, а восемь четырёхмерных векторов, каждый из котрых с одинаковым успехом можно брать как искомый) http://www.mathpages.com/home/kmath069.htm

#11
18:23, 6 окт. 2011

Pushkoff
> там результатом будет плоскость, а не вектор
  Если умножать два вектора, то да. Если три, то будет вектор.

winky
> а для каких целей в программировании нужно векторное произведение 4-мерных векторов?
  Ну вот в gameboost-е один чувак реализовал его, можно посмотреть как там устроено. Когда я тоже спросил зачем это, он как-то невнятно ответил, что может быть где-то нужна и что вообще, мол, отвали, не зря же делал.

#12
18:46, 6 окт. 2011

>(но даже в этом случае в результате перемножения получится не 1, а восемь четырёхмерных векторов, каждый из котрых с одинаковым успехом можно брать как искомый)
Да читерство же. С тремя векторами каждый дурак умеет тензорам индексы дрючить! Так можно сделать отображение не только в V4, но и во всякие хитрожопые 4х4 матрицы.

Давайте лучше пожелаем автору не курить траву на ночь.

#13
19:01, 6 окт. 2011

s3dworld
> А вот в случае четырёхмерного вектора, я не соображу как произвести это
> преобразование:
Векторное произведение двух векторов определено только в 3D и 7D. Увы.

#14
19:02, 6 окт. 2011

Спасибо всем! Тему закрывать не буду, вдруг кто-то хочет что-то добавить, уточнить или посоветовать.

Страницы: 1 2 3 4 5 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.