外向きの法線方向に物体を配置するマクロです。
//**********************************************************************************
#macro Normal_surface2(Vs,Ve,Func_no)
union {
#local Se=Ve.x; #local Ee=Ve.y; #local Ae=Ve.z;
#while( Se < Ee )
#local Ss=Vs.x; #local Es=Vs.y; #local As=Vs.z;
#while( Ss < Es )
#local Pd11=Surface_function(Ss, Se, Func_no);
#local Pd12=Surface_function(Ss, Se+Ae, Func_no);
#local Pd22=Surface_function(Ss+As, Se+Ae, Func_no);
#local Pd21=Surface_function(Ss+As, Se, Func_no);
#local Vn=Normal_vector(Pd11, Pd12, Pd22);
#local Sp=Spherical_coordinates(Vn); #local HH=Sp.y; #local VV=Sp.z;
#local Tf=transform { rotate degrees(VV)*z rotate -degrees(HH)*y }
object { Obj_seg transform Tf translate Pd12 }
#local Vn=Normal_vector(Pd11, Pd22, Pd21);
#local Sp=Spherical_coordinates(Vn); #local HH=Sp.y; #local VV=Sp.z;
#local Tf=transform { rotate degrees(VV)*z rotate -degrees(HH)*y }
object { Obj_seg transform Tf translate Pd21 }
#local Ss=Ss+As;
#end
#local Se=Se+Ae;
#end
}
#end
//**********************************************************************************
Obj_seg は、このマクロを呼び出す前に定義しておきます。