做的是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;
uj5u.com熱心網友回復:

類似這樣的
uj5u.com熱心網友回復:
知道圓弧的起點終點坐標和半徑uj5u.com熱心網友回復:
上面那個代碼只能畫出半圓 ,而且不能出現在正確的位置 ,y坐標只能為0uj5u.com熱心網友回復:
要通過坐標平移的方法,找到圓弧的原點。就可以畫弧了。uj5u.com熱心網友回復:
您能說一下具體的方法嗎,百度了一下坐標平移還是沒有結果。
uj5u.com熱心網友回復:
知道兩點和半徑難道不是可以畫出四個圓弧么?復習下幾何吧。uj5u.com熱心網友回復:
這些,都是平面幾何和決議幾何中的基礎知識。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/39540.html
標籤:語言基礎/算法/系統設計
下一篇:git學習
