空間の三点により形成される平面の法線ベクトルを取得するマクロです。
//**********************************************************************************
#macro Normal_vector(Tp1,Tp2,Tp3)
#local Va=Tp3-Tp2; #local Vb=Tp2-Tp1;
#local Lx=Va.y*Vb.z-Va.z*Vb.y;
#local My=Va.z*Vb.x-Va.x*Vb.z;
#local Nz=Va.x*Vb.y-Va.y*Vb.x;
#local Dc=-Tp1.x*Lx-Tp1.y*My-Tp1.z*Nz;
#if(Dc>=0) #local Sg=1; #else #local Sg=-1; #end
#local Nv=<-Lx*Sg,-My*Sg,-Nz*Sg>;
//#if(vlength(Nv)=0) #local Nv=<0,0,1>; #end
Nv
#end
//**********************************************************************************