円盤による円弧を描画するマクロの中間部分です。
//----------------------------------------------------------------------------------
#local Clipped_type=0;
#if(Vz1!=Pz1 & Vz2!=Pz2)
#local A=2*(Px2-Px1)*(Px1-Ox0)+2*(Pz2-Pz1)*(Pz1-Oz0);
#local B=2*(Pz1-Pz2)*(Px1*Oz0-Pz1*Ox0);
#local C=(Px1-Ox0)*(pow(Px1,2)-pow(Px2,2)+pow(Pz1,2)-pow(Pz2,2));
#local Ox = (B-C)/A; // center x
#local Oz = ( (Pz1-Oz0)/(Px1-Ox0) )*(Ox-Px1)+Pz1; // center z
#local Tr=sqrt(pow(Px2-Ox,2)+pow(Pz2-Oz,2)); // radius r
#local Mc=Px1-Ox; #local Ms=Pz1-Oz;
#if(Mc!=0) #local Mtan=Ms/Mc; #else #local Mtan=tan(pi/2); #end
#local Vxv=(pow(Mtan,2)*Px2+Mtan*(Pz1-Pz2)+Px1)/(pow(Mtan,2)+1);
#local Vzv=(pow(Mtan,2)*Pz1+Mtan*(Px1-Px2)+Pz2)/(pow(Mtan,2)+1);
#local Vs=Vzv-Pz1; #local Vc=-(Vxv-Px1);
#if(Mc!=0)
#if(Mc*Vs>0) #local Clipped_type=1; #end
#if(Mc*Vs<0) #local Clipped_type=2; #end
#else
#if(Ms*Vc>0) #local Clipped_type=1; #end
#if(Ms*Vc<0) #local Clipped_type=2; #end
#end
#end
//----------------------------------------------------------------------------------
円の中心座標と半径を算出し、円から円弧を切り取るための種別も算出しています。