Требуется больше деталей, чтобы дать вам более точный ответ.Но я вижу в основном две проблемы.Вы не инициализируете объект PreviousPos , и мне кажется, что вы хотите, чтобы он сохранялся, верно?
Предполагая, что класс Vector3 имеет минус ( - ) оператор перегружен, поэтому вы можете выполнить эту операцию, вы можете сделать это.
void TestVelocity(Vector3& Pos, Vector3 &Result)
{
static Vector3 PreviousPos; //Initialize here the initial position to zero with your constructor
if (GetTickCount() >= velupd)
{
velupd = GetTickCount() + 100//random timer for test;
Vector3 Diff = Pos - PreviousPos;
float Len = sqrtf(Diff .x * Diff .x + Diff .y * Diff .y + Diff .z * Diff .z);
if (Len >= 0.01)
{
Result = (Diff / Len);
}
}
PreviousPos = Pos.
}
Другое решение состояло бы в том, чтобы взять предыдущую позицию в качестве аргумента, но, как я уже сказал, это сложносказать, если мы не знаем, какую реализацию вы хотите.Это предложения , основанные на том, что кажется необходимым.