复杂形态钢结构设计培训班

首页 Dino结构笔记-公众号 [Dino爱编程]如何绘制Lissajous曲线的动画演示

[Dino爱编程]如何绘制Lissajous曲线的动画演示


[Dino爱编程]如何绘制Lissajous曲线的动画演示

小程序下载:击下载此文件: 绘图小程序Lissajous.exe
以上是 Lissajous 曲线的动画。大家看一看,像不像一个网壳结构。
一条数学公式生成一个斜交网格
Lissajous 曲线 ,数学的优雅。
介绍以下一个著名的斜交网格结构,也是出于WSP公司之手  HEARST TOWER


【Dino爱编程】系列有时候会分享一些美妙的数学曲线,有时侯一些数学曲线可以直接展示数学之美,以下的就是一个最好的例子,之前讲过乘法圆曲线(这里是链接:http://dinochen.com/article.asp?id=277)。以上编程的灵感来源于国内一个数学知名博主的博客 matrix67.com, 这里面有丰富的数学内容,大家有兴趣可以去逛逛。


Lissajous曲线,双叫做示波器曲线,可以通过示波器进行生成的。如下图所示。
曲线上点坐标 px py,它的参数方程 x = sin(m · t), y = sin(n · t) ,其中,m与n是定量参数。
通过随着 t 值 的增加,平面上将会画出一系列漂亮的曲线。法国物理学家 Jules Antoine Lissajous
曾在 1857 年研究过这类曲线,因此人们把它叫做 Lissajous 曲线。


matrix67.com在他的博客上绘制了曲线, http://www.matrix67.com/blog/archives/6947
那么参考matrix67的方法,我通过lazarus编程绘制现 m = 13, n = 18 时的 Lissajous 曲线
动画如下图所示。程序界面如下图所示。

以下是主要的源代码:由于曲线需要动画显示,所以采用了 timer功能。

procedure TForm1.tmr1Timer(Sender: TObject);
var di:double;
begin
 di:=200;
 px:=di*sin(m*tt);
 py:=di*sin(n*tt);
 form1.draw_image;
 tt:=tt+dt;
end;

procedure tform1.draw_image;
begin
  img1.Canvas.Pen.Color:=RGB(51,155,223);
  img1.Canvas.Pen.Width:=2;
  ax:=Round(img1.Width/2+px);
  ay:=Round(img1.Height/2-py);
  img1.Canvas.Pen.Mode:=pmNot;
  img1.Canvas.Ellipse(oldx-5,oldy-5,oldx+5,oldy+5);
  if (oldx<>0) and (oldy<>0) then
  begin
  img1.Canvas.Pen.Mode:=pmcopy;
  img1.Canvas.MoveTo(oldx,oldy);
  img1.Canvas.LineTo(ax,ay);
  end;
  img1.Canvas.Pen.Mode:=pmNot;
  img1.Canvas.Ellipse(ax-5,ay-5,ax+5,ay+5);
  oldx:=ax;
  oldy:=ay;
end;

以上代码非常有用,有一张动态曲线的展示,如滞回曲线,振动曲线等一般都是这么编程显示出来的。
以上是【Dino爱编程】的纯技术分享。



本文来自网络,不代表钢构人的立场,转载请注明出处。搜索工程类文章,就用钢构人网站。 https://www.ganggouren.com/2019/08/172495837b/
上一篇
下一篇

作者: ganggouren

为您推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

联系我们

联系我们

17717621528

在线咨询: QQ交谈

邮箱: 1356745727@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部