使用Matlab,我正在尝试计算和绘制此形状的z切片中包含的点:
它是一个45度角的金字塔,顶部被移除。
当我在z = 198(比上面的数据提示稍下)处切片时,我得到一个奇怪的神器:
以下是我执行检查的代码段:
% 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)
,方形顶部没有像我想象的那样连接到底座:
我最初的情节完成了:
K = convhull(points);
figure;trisurf(K,points(:,1),points(:,2),points(:,3),'Facecolor','red','FaceAlpha',0.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));
给出了我想要的结果。