繁体   English   中英

C ++错误:Double和3d向量

[英]C++ error: Double and 3d Vector

编译以下代码时出现错误,说“被称为对象类型'double'不是函数或函数指针”。 由于“位置”是3D向量,因此我试图访问向量的每个元素。

    int  k=1;
    int  m=1;

    double x, y, z;

    x=position.x;
    y=position.y;
    z=position.z;

    for (int j = 3; j < 1000 ; j++)
    {
     x(j) = 2 * x(j-1) - x(j-2) + (delta_t * delta_t * (-1.0*k/m) * x(j-1));
    }

您实际上需要跟踪的x(j) x(j-1)x(j-2)所有作为独立变量(使用语法x(j)是类似于调用一个函数x()与参数j ,这不是您想要的)。

尝试:

double xj, xj_m1, xj_m2;
xj_m1 = position.x;
xj_m2 = position.x;
for (int j = 3; j < 1000 ; j++) {
    xj = 2 * xj_m1 - xj_m2 + (delta_t * delta_t * (-1.0*k/m) * xj_m1);

    //Update xj_m2 and xj_m1 for the next iteration
    xj_m2 = xj_m1;
    xj_m1 = xj;
}

当您这样做时:

x=position.x;

您期望position.x是数组吗? 要访问向量中的元素,可以使用[]运算符:

std::vector<int> myIntVector = { 1, 2, 3 };
int i = myIntVector[0]; // i = 1 because myIntVector[0] is the first element of myIntVector

变量位置看起来像一个坐标矢量,所以它不是一个数组,而是一个这样的类/结构:

struct Vector3
{
    double x, y, z;
};

换句话说,position.x只是一个数字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM