Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 新旧位置之间的速度_C++_Math_Vector_Velocity - Fatal编程技术网

C++ 新旧位置之间的速度

C++ 新旧位置之间的速度,c++,math,vector,velocity,C++,Math,Vector,Velocity,我在这里看到了一篇文章,通过为UNITY保存旧pos获得了速度,一些代码: void TestVelocity(Vector3& Pos, Vector3 &Result) { Vector3 PreviousPos; if (GetTickCount() >= velupd) { velupd = GetTickCount() + 100//random timer for test; Vector3 Diff

我在这里看到了一篇文章,通过为UNITY保存旧pos获得了速度,一些代码:

void TestVelocity(Vector3& Pos, Vector3 &Result)
{
    Vector3 PreviousPos;

    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.
}

它算错了。数据只能保存对象位置(无速度等)。

需要更多详细信息才能给出更准确的答案。但我基本上看到了两个问题。您没有初始化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.
}

另一个解决方案是将前面的立场作为一个论据,但是正如我所说的,如果我们不知道您想要的实现是什么,那么很难说。这些是基于所需内容的建议。

对于哪些数据,您得到了什么值?对于哪些变量,您期望得到什么值?
在进行计算之前,之前的pos
没有初始化。这应该作为新对象位置和旧位置之间的矢量3速度输出。或者你是什么意思?看起来好像
PreviousPos
应该是
static
…其他部分更正了,不包括将PreviousPos移动到全局变量?我编辑了我的代码,似乎smth工作正常。Ofcource oldpos应在每次velupd勾选时保存。