小弟作业,需要matlab程序:对正六面体的四边网格的光滑细分格式:利用拓扑网格的加细剖分,修改顶点坐标,把正六面体细分成一个近似球的图形

和八面体的三角细分格式(类似上面)

这段程序的作用是立方体的四边细分,我没学过mathematica,看不懂,向各位求助!!!



quadsub[{T_,p_}]:=
Module[{idx,index,currIndex=Length[p],newT,newp},
SetAttributes[index,Orderless];
idx[_,_]=0;
index[i_,j_]:=If[idx[i,j]==0,idx[i,j]=++currIndex,idx[i,j]];
newp=Table[0,{2Length[T]+2Length[p]+10}];
newT=Flatten[Table[
With[{i00=T[[1,1]],i20=T[[1,2]],i22=T[[1,3]],
i02=T[[1,4]]}] ,
With[[{i01=index[i00,i02],i12=index[i02,i22]
i10=index[i00,i20],i21=index[i20,i22],i11=index[i20,i22]
i11=++currIndex},
newp[[{i00,i20,i22,i02,i10,i21,i12,i01,i11}]] 
=M2.p[[T[[1]]]];
{{i00,i10,i11,i01},{i02,i01,i11,i12},{i20,i21,i11,i10},{i22,i12,i11,i21}]],
{length[T]}],1];
{newT,Take[newp,currIndex]}]


其中M2是个常规矩阵=1/4*{{4,0,0,0},{0,4,0,0},{0 0 4 0},{0 0 0 4},
{2 2 0 0 },{0 2 2 0},{0 0 2 2 },{2 0 0 2} ,{1 1 1 1}} 

{T 、p}是立方体的拓扑结构  {[1,4,3,2;1,2,6,5;2,3,7,6;3,4,8,7;4,1,5,8;5,6,7,8],[0 0 0;1 0 0;1 1 0;0 1 0;0 0 1;1 0 1;1 1 1;0 1 1]}

******请高手不吝指教,有知道相关算法的也贴上来,急用啊!

*******我只知道这跟有限元有些关系,有高手能具体指点下吗??