物体を曲面の外向き法ベクトル方向に配置します。
//**********************************************************************************
入力 V1:第一変数の範囲 <始点、終点、刻み幅>
V2:第二変数の範囲 <始点、終点、刻み幅>
Fn:式の登録番号
//**********************************************************************************
#macro Normal_surface(V1,V2,Fn)
#ifndef (Set_obj) #local Set_obj = cylinder { 0, x, 1/30 } #end
#local V=V2.x; #while(V < V2.y)
#local U=V1.x; #while(U < V1.y)
#local N=Nvector(U, V, Fn);
#local Pv=N[0]; #local Vn=N[1];
#local Cp=Spherical_cnv_z(Vn);
object { Set_obj rotate -degrees(Cp.z)*y rotate degrees(Cp.y)*z translate Pv }
#local U=U+V1.z; #end
#local V=V+V2.z; #end
#end
//**********************************************************************************
例) 円柱を楕円放物面の外向き法ベクトル方向に配置します。
#local Fn=22;
#local Sc=18; #local Rt=<22,0,-15>; #local Tr=-50*z;
#local Tf=transform { scale Sc rotate Rt translate Tr }
union { Normal_surface(<-pi+1.5/Sc,pi,2/Sc>,<-pi/2,pi/2,2/Sc>,Fn)
texture { Ts } transform Tf }