سؤال

لقد رأيت مخططات سطحية ثلاثية الأبعاد من البيانات من قبل ولكني لا أعرف ما هو البرنامج الذي يمكنني استخدامه لإنشاء ذلك.

لدي 3 سلاسل من البيانات (X، Y، Z) بشكل أساسي أريد أن يكون كل صف من الصفوف الموجودة على الطاولة نقطة في مساحة ثلاثية الأبعاد، وكلها متصلة كشبكة.البيانات حاليًا هي ملف CSV، ولكن يمكنني تغيير التنسيق، حيث إنها بيانات قمت بإنشائها بنفسي.

هل أستطيع مساعدتك

هل كانت مفيدة؟

المحلول

وإذا كان لديك س و ص نقاط تكمن طبوغرافيا على الشبكة، ثم يمكنك استخدام MESH. أنها لا تحتاج إلى أن يكون حتى التباعد. فهي تحتاج فقط إلى أن تنظم بحيث العاشر (ص: ص + 1، ج: ج + 1) و y (ص: ص + 1، ج: ج + 1) تحدد الرباعي على شبكة الخاصة بك، على كل ص الصفوف والأعمدة ج.

وإذا كانت البيانات لا تكذب على الشبكة، ولكن هل تعرف ما ينبغي أن تكون وجوه، والنظر في وظيفة PATCH.

إذا كان لديك نقاط فقط وكنت لا تعرف أي شيء عن السطح، وتحتاج إلى حل أولا في إعادة الإعمار سطح المشكلة. لقد cocone المستخدمة؛ هناك مجموعات أخرى جيدة هناك أيضا. وبمجرد الانتهاء من السطح أعيد بناؤها، ثم يمكنك استخدام PATCH لعرضه.

نصائح أخرى

هل نظرت في استخدام vtk؟إذا كان لديك Matlab فيجب أن تكون قادرًا على استخدامه com.plot3d أو تصفح مع شبكة و معلومات الشبكة لإنشاء قطع سطحية ثلاثية الأبعاد أو رقعة كما اقترح السيد.فوز.

سايلاب

وما يلي نص برمجي لسايلاب التي كتبت حظة العودة. يقرأ في ثلاثة أعمدة مفصولة علامات التبويب. يمكنك بسهولة تغيير هذه لتناسب احتياجاتك، جميلة الذاتي التفسيرية. هنا هو دليل سريع ل / الكتابة في سايلاب واحد I الرجوع أدناه هنا :

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