C ++ 3D Array LiDAR Data

У меня есть проект в университете, который меня несколько озадачил. 1[Ссылка на проект] По этой ссылке вы попадете на веб-сайт, а проект представляет собой PDF-файл под названием «Данные LiDAR и 3D-массивы».
Основная предпосылка проекта заключается в том, чтобы иметь возможность считывать и хранить данные в массиве трехмерных символов, а затем отображать фактические данные в формате изображения. Вот мой код, который содержит 3 метода, которым мы были назначены для записи в классе array3d.

#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <fstream>
using namespace std ;

// -----------------------------------------------------------------
// array3d class with variables for 3D Matrix boundaries, 3D Matrix itself,
// Methods to store data in 3D Matrix, and display LiDAR data

class array3d
{
private:
int m, n, p;
int a, b, c;
char *** G;
public:
array3d();
~array3d();
bool read(char * fname);//Method to read file and store data in 3D    Matrix
void get_sizes(int & a, int & b, int & c);//Method to fine values of m, n, and p
int get_zmap_value(int x, int y);// Method to return highest occupied cell for pos. x, y
};
// -----------------------------------------------------------------
bool array3d::read(char * fname)
{
//Read the data into a 3D matrix
ifstream ifs;
ifs.open(fname);
if(!ifs.is_open())
{
cerr << "Can not open (read) file '" << fname << "'" << endl;
return false;
}
ifs >> m;
ifs >> n;
ifs >> p;
G = new (nothrow) char **[m];
for(int i = 0; i < m; i++)
{
G[n] = new (nothrow) char *[n];
for(int j = 0; j < n; j++)
{
G[n][p] = new (nothrow) char [p];
for(int k = 0; k < p; k++)
{
ifs >> G[m][n][p];
}
}
}
ifs.close();
return true;
}
// -----------------------------------------------------------------
void array3d::get_sizes(int & a, int & b, int & c)
{
//Get values for m, n, and p using pass-by-reference semantics
a = m;
b = n;
c = p;
}
// -----------------------------------------------------------------
int array3d::get_zmap_value(int x, int y)
{
//Returns the highest occupied cell (z-index) for pos. x, y in the  ground plane
for(int z = 0; z < p; z++)
{
if(G[x][y][z] == 1)
{
return z;
}
}
}
// -----------------------------------------------------------------

И вот код для MakeFile, который мы также должны создать

##
## FILE: MakeFile
##
zview:      array3d.o main.o
g++ -o zview array3d.o main.o -L/user/local/lib -lppm_graphic
##
array3d.o: array3d.cc
g++ -c array3d.cc
##
##
clean:
/bin/rm array3d.o main.o zview

Для make-файла мы получили файл main.o, но не можем получить к нему доступ. Также файл библиотеки находится в другом каталоге, поэтому мы должны получить к нему доступ, используя несколько различных параметров строки cmd.

Когда я запускаю свой код и запускаю zview, происходит то, что он открывает программу, которая должна показывать изображения, но на ней нет изображения, только название программы для работы с изображениями и некоторые другие параметры. В принципе, я не уверен, что моя проблема здесь, но любая помощь будет оценена. Кроме того, пожалуйста, не просто дайте мне ответ, я бы хотел понять, почему это не работает, поэтому любая конструктивная помощь будет принята с благодарностью.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]