关于曲线的问题

rcaicc 2004-08-30 11:20:20
现在已知有5~10个点,我想用这几个点做一个曲线,实在不知道该怎么下手,请各位帮忙。并且这几个点当中有可能存在错误的点,利用曲线把错误的点找出来。给个提示或代码都可以
E_mail:rcaic@hotmail.com
先谢过了~
...全文
103 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
rcaicc 2004-09-03
  • 打赏
  • 举报
回复
问题没解决,希望有空了帮个忙。。。发短信。OK/
luke5678 2004-08-31
  • 打赏
  • 举报
回复
但这种方法有个限制,就是点的个数必须满足下面的关系:

个数 = n*3 + 4 (n=0,1,2,3...)
luke5678 2004-08-31
  • 打赏
  • 举报
回复
可以用贝塞尔曲线实现:

给个例子:

procedure TForm1.FormPaint(Sender: TObject);
var
Points : array[0..3] of TPoint;
begin
Points[0].X := 10;
Points[0].Y := 50;
Points[1].X := 40;
Points[1].Y := 90;
Points[2].X := 80;
Points[2].Y := 10;
Points[3].X := 110;
Points[3].Y := 50;
PolyBezier(Canvas.Handle, Points, 4);
end;

nyf1220 2004-08-31
  • 打赏
  • 举报
回复
怎么个曲线法呀?
rcaicc 2004-08-31
  • 打赏
  • 举报
回复
自己顶
rcaicc 2004-08-31
  • 打赏
  • 举报
回复
对啊。。。
rcaicc 2004-08-30
  • 打赏
  • 举报
回复
luke5678(奇异) :用moveto和lineto始终画出来的都是直线
militant(小猪油) :这几个点做曲线。怎么会有拐点??可以理解成随机的几个点
militant 2004-08-30
  • 打赏
  • 举报
回复
你说的这个线有没有拐点呢?
militant 2004-08-30
  • 打赏
  • 举报
回复
先学学大学里头的数学分析吧
luke5678 2004-08-30
  • 打赏
  • 举报
回复
思路而已
luke5678 2004-08-30
  • 打赏
  • 举报
回复
procedure TForm1.BitBtn1Click(Sender: TObject);
var
X1, X2, X3, X4, X5: integer; //五个点的X坐标
Y1, Y2, Y3, Y4, Y5: integer; //五个点的Y坐标
begin
X1 := 10; Y1 := 10; //(10, 10)
X2 := 15; Y2 := 30; //(20, 30)
X3 := 30; Y3 := 80; //(30, 50)
X4 := 48; Y4 := 90; //(40, 70)
X5 := 70; Y5 := 110; //(50, 90)
PaintBox1.Canvas.MoveTo(X1, Y1);
PaintBox1.Canvas.LineTo(X2, Y2);
PaintBox1.Canvas.LineTo(X3, Y3);
PaintBox1.Canvas.LineTo(X4, Y4);
PaintBox1.Canvas.LineTo(X5, Y5);

end;
luke5678 2004-08-30
  • 打赏
  • 举报
回复
你的意识是不是用平滑的曲线连接已知的几个点??!!

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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