Matlab - 绘制alphaShape切片中包含的点

时间:2018-01-27 23:25:23

标签: matlab

使用Matlab,我正在尝试计算和绘制此形状的z切片中包含的点: Overall view

它是一个45度角的金字塔,顶部被移除。

当我在z = 198(比上面的数据提示稍下)处切片时,我得到一个奇怪的神器: Slice

以下是我执行检查的代码段:

% Setup alphaShape as "alpha" ....
points = 1e3 * [0.3223    0.1761    0.3299
    0.5752    1.2034   -0.0618
   -0.0172    1.2034   -0.0618
    0.2357    0.1761    0.3299
    0.3223    0.0671    0.2209
    0.5752    0.4588   -0.8064
   -0.0172    0.4588   -0.8064
    0.2357    0.0671    0.2209];
alpha = alphaShape(points);

% Then, check if coordinates on slice are in or outside alpha

z = 198;
width = 550;
depth = 450;
inout = zeros(width,depth);
for qx = 1:width
   for qy = 1:depth
      in = inShape(alpha,qx,qy,z);
      if (in)
         inout(qx,qy) = 1;
      end
   end
end

% Plot
figure; contourf(inout.'); % Not sure why conjugate needed?

有人能指出导致我的切片结果中出现额外“挂钩”的原因吗?或者如何修复我的代码以删除它?

编辑:使用plot(alpha),方形顶部没有像我想象的那样连接到底座: alpha plot 我最初的情节完成了: K = convhull(points); figure;trisurf(K,points(:,1),points(:,2),points(:,3),'Facecolor','red','FaceAlpha',0.1);

1 个答案:

答案 0 :(得分:0)

问题是我如何创建我的alphaShape。

使用matlab文件交换中的内置{{setVarWithName "test" "hello"}} {{#each questions}} <h3>{{title}}</h3> <p>before update: {{../test}}</p> {{setVarWithName "test" "goodbye"}} <p>after update: {{../test}}</p> <hr /> {{/each}} 函数和var source = $("#template").html(); var template = Handlebars.compile(source); var data = { "questions": [ {"title": "Question 1"}, {"title": "Question 2"} ] }; Handlebars.registerHelper('setVarWithName', function (name, value) { this[name] = value; return ''; }); $('body').append(template(data)); 给出了我想要的结果。