Delphi 的画弧问题
做的是G代码译码,下面是解析弧线的代码,结果不能正确的画出需要的弧线(两段y坐标相同的线段之间连接的弧线)求问怎么回事
procedure TForm1.DrawFox(lineInfo:String);
var di,a,b,r,x,y,ab2:integer;
sub:string;
temp:double;
begin
di:=pos('G02',lineInfo);
if (di=0) then
exit;
a:=strtoint(subString(lineInfo,'Z',' ',sub));
b:=strtoint(subString(lineInfo,'X',' ',sub));
r:=strtoint(subString(lineInfo,'R',' ',sub));
a:=a*2;
b:=b*2;
r:=r*2;
ab2:=a*a+b*b;
temp:=(4*sqr(b)*sqr(r)-sqr(ab2)) / (4*ab2)+sqr(a) / 4;
x:=round(-sqrt(temp)+a/2);
y:=round((ab2-2*a*x)/2*b);
xsh:=paintbox1.width-232;
ysh:=paintbox1.height-150;
x:=xsh+x;
y:=ysh+y;
paintbox1.Canvas.Pen.Style:=pssolid;
paintbox1.Canvas.Pen.Width:=3;
paintbox1.Canvas.Pen.Color:=clred;
paintbox1.canvas.MoveTo(x,y);
paintbox1.canvas.Arc(x-r,y-r,x+r,y+r,xsh,ysh,xsh+a,ysh-b);
end;