外向き法線方向配置マクロ

 外向きの法線方向に物体を配置するマクロです。
 //**********************************************************************************
  #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 は、このマクロを呼び出す前に定義しておきます。