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