创造厚厚的Gyroid

时间:2017-10-09 03:49:42

标签: matlab

我想为Gyroid的Gyroid功能提供厚度

foreach

目前我得到两个表面。我想用isocaps弥补差距。 current outcome

这是我期望的输出但是作为一个Isosurface def而不是通过分别对两个表面使用isosurface。 desired outcome should be like this

1 个答案:

答案 0 :(得分:0)

我正在研究类似的问题。我以Wikipedia的回旋公式作为参考,我有一个代码可以为3D打印创建.stl文件。

以下代码仅计算了从-pi到+ pi的单个单元的回旋,它使t成为最差点,其中vt = 0是一个曲面,v + t = 0是另一个曲面,将两者相乘当第一个或第二个表面为0时,它将获得0值,因此通过将等值面评估为0,您将获得其中任何一个。 isocaps适用于“低于” 0的每个值,从而在两个曲面之间的边界上填充曲面。

我在八度音阶上做到了,但我认为这段代码应该在matlab上运行。

[x, y, z] = meshgrid (-pi:pi/16:pi);
v = sin(x).*cos(y)+sin(y).*cos(z)+sin(z).*cos(x); %gyroid formula
t=0.15; % offset from isovalue, affects thickness
v=(v-t).*(v+t); %multiplies one negative offset gyroid and one positive offset gyroid
figure(1)
isosurface (x, y, z, v, 0);
hold on
figure(1)
isocaps(x,y,z,v,0,"below");