Приветствую!
У меня вопрос по большей части каксающийся высшей математики.
Задача следующая:
Имеем 2 точки в пространстве A(x0, y0, z0) и B(x1, y1, z1). необходимо из точки А передвигаться в точку B равными промежутками.
Я использовал систему параметрических уравнений прямой:
x = kt + x0,
y = lt + y0,
z = mt + z0
где (x0, y0, z0) - известная (начальная) точка на прямой, p(k, l, m) - направляющий вектор (значения реально вычислить, зная начальную и конечную точку).
Пример кода на javascript:
Code
var cameraMoving = setInterval( function() {
//в начале каждой итерации изменяем значение t, которое и будет давать новую точку на прямой
t += 0.01;
k = (endPoint[0] - camera.position.x) / t;
l = (endPoint[1] - camera.position.y) / t;
m = (endPoint[2] - camera.position.z) / t;
camera.position.x = k * t + camera.position.x;
camera.position.y = l * t + camera.position.y;
camera.position.z = m * t + camera.position.z;
//для определения попали ли мы в область назначения находим расстояние от текущей до конечной точки
dist = Math.pow( (camera.position.x-endPoint[0]),2 ) + Math.pow( (camera.position.y-endPoint[1]),2 ) + Math.pow( (camera.position.z-endPoint[2]),2 );
//если мы близко к точке назначения - останавливаемся
if ( dist < 10 )
clearInterval(cameraMoving);
}, 100);
Этот код срабатывает мгновенно, т.е. движения как такового не происходит, а я тут же оказываюсь в точке назначения.
Кто-нибудь может либо указать на ошибку в коде, либо предложить другой алгоритм вычисления (просто ход рассуждений)?
Заранее спасибо