Delphi 的画弧问题

delphi小白 2018-06-01 04:25:25
做的是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;
...全文
2398 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyhoo163 2018-07-20
  • 打赏
  • 举报
回复
这些,都是平面几何和解析几何中的基础知识。
EP外星人 2018-07-20
  • 打赏
  • 举报
回复
知道两点和半径难道不是可以画出四个圆弧么?复习下几何吧。
delphi小白 2018-06-03
  • 打赏
  • 举报
回复
引用 4 楼 lyhoo163 的回复:
要通过坐标平移的方法,找到圆弧的原点。就可以画弧了。
您能说一下具体的方法吗,百度了一下坐标平移还是没有结果。
lyhoo163 2018-06-01
  • 打赏
  • 举报
回复
要通过坐标平移的方法,找到圆弧的原点。就可以画弧了。
delphi小白 2018-06-01
  • 打赏
  • 举报
回复
上面那个代码只能画出半圆 ,而且不能出现在正确的位置 ,y坐标只能为0
delphi小白 2018-06-01
  • 打赏
  • 举报
回复
知道圆弧的起点终点坐标和半径
delphi小白 2018-06-01
  • 打赏
  • 举报
回复

类似这样的

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧