簡體   English   中英

生成動態3D矩陣

[英]Generating a dynamic 3D matrix

我需要動態生成這樣的3D矩陣:

float vCube[8][3] = {
    {1.0f, -1.0f, -1.0f}, {1.0f, -1.0f, 1.0f},
    {-1.0f, -1.0f, 1.0f}, {-1.0f, -1.0f, -1.0f},
    {1.0f, -1.0f, -1.0f}, {1.0f, 1.0f, 1.0f},
    {-1.0f, 1.0f, 1.0f}, {-1.0f, 1.0f, -1.0f}
};

我的意思是,取一個值,並把它放在里面基質上運行的時間。 我試圖使指針浮動,然后通過new添加3D元素,但結果不是我想要的。

請注意,我不想像矢量那樣使用STL,而只是使用平面矩陣。

無論您是否使用vector ,我都建議您使用:

struct Elem3D
{
   float v[3]; 
};

然后,您可以輕松創建vector

vector <Elem3D> cube(8); 

或動態分配一些元素

Elem3D *cube = new Elem3D[8]; 

在不使用structclass情況下使用二維數組很快就會在語法和“ brainhurt”方面變得非常混亂。

您還可以將3D矩陣存儲在一維數組中

 x = height
 y = width
 z = depth
 float VCube[x*y*z]
 a_ijk = VCube[i + y * (j + z * k)]

一個有趣的問題是,如果我們要進行矩陣運算,則知道哪種解決方案(此解決方案或Mats Petersson解決方案)可以減少緩存丟失

要初始化二維數組,首先定義變量;

float vCube[8][3];

然后創建一個將初始化vCube的函數,或者您可以像這樣在構造函數中進行初始化。

void function(float a, float b, float c) {
  for(int i = 0; i < 8; i++) {
    for(int j = 0; j < 3; j +=3) {
      vCube[i][j] = a;
      vCube[i][j+1] = b;
      vCube[i][j+2] = c;
    }
  }
} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM