Может кто-нибудь объяснить логику этих выражений, используемых для вычисления неортогональных столкновений? - PullRequest
2 голосов
/ 18 декабря 2010

Я следую примеру в книге «Обработка», в котором описывается, как вычислять неортогональные столкновения (отскок мяча от горизонтальной плоскости), однако я не совсем понимаю логику этих четырех выражений.

 float groundXTemp = cosine * deltaX + sine * deltaY;
 float groundYTemp = cosine * deltaY - sine * deltaX;
 float velocityXTemp = cosine * velocity.vx + sine * velocity.vy;
 float velocityYTemp = cosine * velocity.vy - sine * velocity.vx;

Предполагается, что они рассчитывают временные значения для наземных координат и скорости шара, чтобы вычислить столкновение, как если бы оно было ортогональным. Косинус и синус - это значения для вращения земли, а переменные скорости - это скорость мяча. Я не могу понять, что на самом деле делают выражения, чтобы сделать землю горизонтальной, и книга не очень хорошо объясняет это. Любая помощь будет оценена.

1 Ответ

3 голосов
/ 19 декабря 2010

Эти выражения являются традиционными выражениями вращения.Если взять точку (x, y) и повернуть ее на угол тета, вы получите точку (x ', y') с координатами:

x '= cos (theta) * x- sin (тета) * yy '= sin (тета) * x + cos (тета) * y

В вашем случае, допустим, что тета - это угол земли, вы хотите сделать обратное вращение(то есть с углом -та), чтобы сделать землю горизонтальной, поэтому знак отличается от приведенной выше формулы (cos (-theta) = cos (theta) и sin (-theta) = -sin (theta)).

Если вы хотите вникнуть в подробности, отметьте: http://en.wikipedia.org/wiki/Rotation_matrix

...