[英]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.