سؤال

لدي مضلع مع V القمم و n عدد الفتحات. كيف يمكنني إنشاء شبكة باستخدام Delaunay Triangulation لهذا المضلع في Matlab؟

أعلم أنني أستطيع استخدام delaunay. وظيفة، لكنني لا أعرف كيفية إدخال الافتتاح.

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

المحلول

ملحوظة: إصدارات أحدث من ماتلاب يوصي باستخدام delaunayTriangulation صف دراسي وأساليبها المرتبطة بها. الحل الصحيح صالح للإصدارات القديمة، ويجب أن يكون من السهل التكيف مع الفئة الأحدث.


يمكنك استخدام الوظيفة delaunaytri. لإنشاء تثليث delaunay مع الحواف المقيدة لتضمين حدود المضلع وحواف الفتحات. سيؤدي ذلك إلى إنشاء تثليث يتضمن الفتحات، بحيث يمكنك بعد ذلك تحديد تلك المثلثات فقط "داخل" المنطقة المحددة (أي في المضلع ولكن ليس في الفتحات) باستخدام الوظيفة inoutstatus..

إليك مثال على مربع مع ثقب مربعة:

x = [0 1 2 3 3 3 3 2 1 0 0 0 1 2 2 1].';
y = [0 0 0 0 1 2 3 3 3 3 2 1 1 1 2 2].';
c = [(1:11).' (2:12).'; 12 1; (13:15).' (14:16).'; 16 13];  % Constrained edges
dt = DelaunayTri(x, y, c);   % Create constrained triangulation
isInside = inOutStatus(dt);  % Find triangles inside the constrained edges
tri = dt(isInside, :);       % Get end point indices of the inner triangles
triplot(tri, x, y);          % Plot the inner triangles
hold on;
plot(x(c(1:12, :)), y(c(1:12, :)), 'r', 'LineWidth', 2);    % Plot the outer edges
plot(x(c(13:16, :)), y(c(13:16, :)), 'r', 'LineWidth', 2);  % Plot the inner edges
axis equal;
axis([-0.5 3.5 -0.5 3.5]);

وهنا مؤامرة تم إنشاؤها بواسطة الرمز أعلاه:

enter image description here

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top