문제

나는 이전에 3D 표면 데이터를 보았지만 어떤 소프트웨어를 만들 수 있는지 모르겠습니다.

나는 3 개의 일련의 데이터 (x, y, z)를 가지고 있습니다. 기본적으로 테이블의 각 행이 3D 공간의 포인트가되기를 원하며 모두 메쉬로 연결됩니다. 데이터는 현재 CSV이지만 직접 생성 한 데이터이므로 형식을 변경할 수 있습니다.

누구나 도울 수 있습니다

도움이 되었습니까?

해결책

X & Y가 점수로 그리드에 놓이면 메쉬를 사용할 수 있습니다. 그들은 간격을 가질 필요가 없습니다. x (r : r+1, c : c+1) 및 y (r : r+1, c : c+1)가 메쉬의 사변형을 정의하도록 구성해야합니다. 각 행 R과 열에 대해 정의해야합니다. 씨.

데이터가 그리드에 있지 않지만 얼굴이 무엇인지 알고 있다면 패치 기능을보십시오.

포인트 만 있고 표면에 대해 아무것도 모르는 경우 먼저 해결해야합니다. 표면 재건 문제. 나는 Cocone을 사용했습니다. 다른 좋은 패키지도 있습니다. 재구성 된 표면이 있으면 패치를 사용하여 표시 할 수 있습니다.

다른 팁

사용을 보셨습니까? VTK? Matlab이 있다면 사용할 수 있어야합니다. Plot3d 또는 서핑 ~와 함께 메쉬 그 리드 그리고 그리드다타 3D 표면 플롯을 생성합니다 반점 제안한대로 Fooz 씨.

gnuplot 또는 스클 랩

아래는 내가 한동안 썼던 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