向量场可视化方法

来源:互联网 发布:软件地图 编辑:程序博客网 时间:2024/05/17 14:19

这是在学生时期做的一个东西,将向量场可视化。

向量场即在二维平面中,存在很多向量,对于一张图片来说,可以理解为每一个像素都有一个单位向量,如果相邻像素的向量指向方向有规则性,则会形成十分美妙的图案,如下图所示:

Figure 1

形成这样的图片,是非常简单的:

1)生成噪点图;


Figure 2

2)生成向量场,由于向量场不可以观察,也正是如此,我才有本文所述的工作,但是下面的代码可以表示Figure 2的代码:

double generate_circle_field(float *dx, float *dy, int width, int height){    double cx = width / 2;    double cy = height / 2;    int x, y;    for(int y = 0; y < height; y++)    {        for(int x = 0; x < height; x++)        {            double deltaX = cx - x;            double deltaY = cy - y;            double dist = sqrt( deltaX * deltaX + deltaY * deltaY ) + EPSILON;            int idx = y * width + x;            dx[idx] = deltaY / dist;            dy[idx] = - deltaX / dist;        }    }}
代码非常的简单,不过如果结合数学知识就很容易理解了(圆圈弧的切向量)。

好了,内容就这么多我的程序见https://github.com/huneng/Vector-Field-Visual,如果想可视化任意向量场就替换上面这个函数,另外还生成了一些向量场图片:

  

Figure 3

Author E-mail:huneng1991@163.com


0 0
原创粉丝点击