Вопрос

Я уже видел 3D-графики поверхности данных раньше, но я не знаю, какое программное обеспечение я мог бы использовать для их создания.

У меня есть 3 серии данных (X, Y, Z) в принципе, я хочу, чтобы каждая из строк в таблице была точкой в трехмерном пространстве, все они были соединены в виде сетки.В настоящее время данные находятся в формате csv, но я могу изменить формат, так как это данные, которые я сгенерировал сам.

Кто-нибудь может помочь

Это было полезно?

Решение

Если ваши точки x и y топологически лежат на сетке, то вы можете использовать MESH .Им не нужно иметь равномерных интервалов;их просто нужно организовать так, чтобы x (r: r + 1, c: c + 1) и y (r: r + 1, c: c + 1) определяли четырехугольник в вашей сетке для каждой строки r и столбца c.

Если ваши данные не лежат на сетке, но вы знаете, какими должны быть грани, посмотрите на функцию PATCH (ИСПРАВЛЕНИЕ).

Если у вас есть только точки и вы ничего не знаете о поверхности, вам нужно сначала решить реконструкция поверхности проблема.Я использовал cocone;там есть и другие хорошие пакеты.Как только у вас будет восстановленная поверхность, вы сможете использовать PATCH для ее отображения.

Другие советы

Вы рассматривали возможность использования втк?Если у вас есть Matlab, то вы должны быть в состоянии использовать график3д или прибой с сетка и сеточные данные для создания 3D-графиков поверхности или патч как было предложено МистерФуз.

gnuplot или scilab ( скалабор )

Ниже приведен скрипт для SciLab, который я написал некоторое время назад.Он состоит из трех столбцов, разделенных табуляциями.Вы можете легко изменить это в соответствии с вашими потребностями, это не требует пояснений.Вот краткое руководство по чтение / запись в scilab и тот, на который я ссылаюсь ниже, это здесь:

function plot_from_file(datafile)
//
// Make a simple x-y-z plot based on values read from a datafile.
// We assume that the datafile has three columns of floating-point
// values seperated by tabs.

  // set verbose = 1 to see lots of diagnostics
  verbose = 1;

  // open the datafile (quit if we can't)
  fid = mopen(datafile, 'r');
  if (fid == -1) 
    error('cannot open datafile');
  end

  // loop over all lines in the file, reading them one at a time
  num_lines = 0;
  while (true)

    // try to read the line ...
    [num_read, val(1), val(2), val(3)] = mfscanf(fid, "%f\t%f\t%f");
    if (num_read <= 0)
      break
    end
    if (verbose > 0)
      fprintf(1, 'num_lines %3d  num_read %4d \n', num_lines, num_read);
    end
    if (num_read ~= 3) 
      error('didn''t read three points');
    end

    // okay, that line contained valid data.  Store in arrays
    num_lines = num_lines + 1;
    x_array(num_lines) = val(1);
    y_array(num_lines) = val(2);
    z_array(num_lines) = val(3);
  end

  // now, make the plot
  plot3d2(x_array, y_array, z_array);
  // close the datafile
  mclose(fid);

endfunction
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top