簡體   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