円弧描画マクロ(後)

 円盤による円弧を描画するマクロの最後の部分です。
 //----------------------------------------------------------------------------------
  #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
 //**********************************************************************************