円盤による円弧を描画するマクロの最後の部分です。
//----------------------------------------------------------------------------------
#switch(Clipped_type)
#case(0)
#local Arc=atan2(Pz2-Pz1,Px2-Px1)+pi/2;
#local Dx=Lr*cos(Arc); #local Dz=Lr*sin(Arc);
mesh {
triangle { < Px1+Dx,0,Pz1+Dz >,< Px2+Dx,0,Pz2+Dz >,< Px1-Dx,0,Pz1-Dz > }
triangle { < Px2-Dx,0,Pz2-Dz >,< Px1-Dx,0,Pz1-Dz >,< Px2+Dx,0,Pz2+Dz > }
}
#local Ox=Ox0+(Px2-Px1); #local Oz=Oz0+(Pz2-Pz1);
#break
#case(1)
#local Ra1=-degrees(atan2(Pz1-Oz,Px1-Ox))+180;
#local Ra2=-degrees(atan2(Pz2-Oz,Px2-Ox));
disc { 0,y,Tr+Lr,Tr-Lr
clipped_by { plane { z, 0 } rotate (Ra1)*y }
clipped_by { plane { z, 0 } rotate (Ra2)*y }
translate < Ox, 0, Oz > }
#break
#case(2)
#local Ra1=-degrees(atan2(Pz1-Oz,Px1-Ox));
#local Ra2=-degrees(atan2(Pz2-Oz,Px2-Ox))+180;
disc { 0,y,Tr+Lr,Tr-Lr
clipped_by { plane { z, 0 } rotate (Ra1)*y }
clipped_by { plane { z, 0 } rotate (Ra2)*y }
translate < Ox, 0, Oz > }
#break
#end
#local Ox0=Ox; #local Oz0=Oz;
#end
//**********************************************************************************