Отражение? Как мне это сделать? - PullRequest
4 голосов
/ 28 марта 2011

Это у меня над головой, может кто-нибудь объяснить мне это лучше? http://mathworld.wolfram.com/Reflection.html

Я играю в 2-й бой с прорывом, поэтому мне нужно, чтобы мяч отражался, когда он ударяется о стену, весло или противника (или враг его ударяет).

все их формулы имеют вид: x_1 ^ '- x_0 = v-2 (v · n ^^) n ^^.

И я не могу этого сделать. (Что означает «или x_0? Или ^^?»

Ответы [ 3 ]

27 голосов
/ 28 марта 2011

Формула для отражения легче понять, если подумать о геометрическом значении операции «скалярное произведение».

Точечное произведение между двумя трехмерными векторами математически определяется как

<a, b> = ax*bx + ay*by + az*bz

но у него хорошая геометрическая интерпретация

Точечное произведение между a и b является длиной проекции a сверх b , взятой с отрицательный знак, если два вектора указывают на противоположные направления, умноженные на длину b .

dot product geometric interpretation

То, что сразу становится очевидным при использовании этого определения и что не очевидно, если вы посмотрите только на формулу, это, например, то, что скалярное произведение двух векторов не меняется, если система координат вращается, что точечное произведение двух перпендикулярные векторы равны 0 (длина проекции явно равна нулю в этом случае) или что произведение точки вектора само по себе является квадратом его длины.

Что-то менее очевидное при использовании геометрической интерпретации состоит в том, что скалярное произведение коммутативно, т. Е. <a, b> = <b, a> (факт очевиден с учетом формулы).

Важным моментом, который необходимо учитывать, является также то, что если длина b равна 1, то скалярное произведение <a, b> - это просто длина проекции a над b (взято с соответствующим знаком).

При такой интерпретации формула для вычисления отражения над плоскостью довольно легко понять:

vector reflection

Чтобы вычислить отраженный вектор r , учитывая вектор a и плоскость с нормальной n , вам просто нужно использовать формулу:

r = a - 2<a, n> n

высота ч на рисунке в данном случае равна <a, n> (обратите внимание, что n считается единицей длины), поэтому должно быть ясно, что вам нужно для перемещения в два раза выше этой высоты в направлении нормали.

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

2 голосов
/ 28 марта 2011

штрих (') обозначает вторую форму числа / точки / структуры.В этом случае x₁ 'относится к отраженной форме x₁.

Индекс (0) показывает различные состояния одного и того же.В этом случае x₀ является точкой отражения.

Обозначение каретки (^) показывает, что что-то является вектором.В этом случае n̂ - нормальный вектор.

0 голосов
/ 28 марта 2011

Это только форматирование уравнения?Потому что я вижу красиво отформатированные уравнения, а не разметку в стиле LaTeX, появляющуюся в вашем вопросе.Итак, шаг 1: попробуйте просмотреть страницу в другом веб-браузере и посмотрите, не выглядит ли она более понятной.

Более конкретно, я бы рекомендовал другой тип ресурса.По сути, вы смотрите на столкновения , которые обычно лучше обрабатываются в тексте по физике, чем в тексте по математике.Любой вводный учебник по физике будет содержать главу о столкновениях, которая должна быть непосредственно применима к вашей игре.

...