曲面の位置と外向きの法線ベクトルを求めるためのマクロです。
//**********************************************************************************
#macro Nvector(U,V,Fn)
#local N=array[2]
#local P=Surface_func(U,V,Fn);
#local H=1e-4;
#local Fu=Surface_func( U+H/2, V, Fn)-Surface_func( U-H/2, V, Fn);
#local Fv=Surface_func( U, V+H/2, Fn)-Surface_func( U, V-H/2, Fn);
#local Nv=vcross(Fu/H,Fv/H);
#if(vdot(-P,Nv)>=0) #local Sg=1; #else #local Sg=-1; #end
#local Vn=-Sg*Nv; #if(vlength(Vn)=0) #local Vn=<0,0,1>; #end
#local N[0]=P; #local N[1]=Vn;
N
#end
//**********************************************************************************