根据点坐标X,Y,Z和方向向量Vx,Vy,Vz绘制射线簇
1. 数据导入
paraview可以直接导入以逗号分隔的txt或csv数据,但无法自动识别,需要使用过滤器转为paraview可以操作的数组。
以下是以空格分隔的txt数据为例,paraview 5.11.1版本。数据的存储格式如下图所示,以空格隔开。x,y,z为点的空间坐标,vx,vy,vz为方向向量在三个方向上的分量。
这种形式的存储格式需要改为以英文逗号“,”隔开的形式,可以直接改后缀为csv然后用excel分列:
如果对于数据精度有要求的记得在分好列后将所有数据单元格格式小数位数设置成所需的位数,不然关闭后再次打开数据会变成2位小数的(可能是默认2位小数)!!!!
在paraview中打开文件,然后通过CSV Reader导入分列后的csv数据,再在左侧点Apply导入数据,如果数据量比较大(百万级)的话可能要等几秒。
2. 应用过滤器
将x,y,z,vx,vy,vz各列数据与paraview中的点关联起来。
选中刚导入Pipeline Browser中的RyasData1.csv数据,然后右键如下所示操作,选择Table To Points过滤器。
然后在过滤器中设置对应的xyz数据后Apply,在spreadsheetview1中会出现设置好的TableToPoint1。
选中TableToPoint1右键如下选择calculator,将Result array name改为Vectors(这个名字随意),并在下一行输入计算式:
vx*iHat+vy*jHat+vz*kHat
,这里的iHat,jHat,kHat是单位向量i,j,k。然后Apply。
3. 绘制射线簇
然后选中Calculator1应用过滤器Glyph,设置Glyph Type为Line,Scale Factor为0.1(这个是过点线段的长度,单位:米),然后Apply。然后在左侧的Coloring中将Solid Color改为Vectors,就可以在RenderView1中看到线段簇了。
但此时这些线段簇还不是以这些点为起点的射线,而是以这些点为中点的线段(左右各0.05m),需要再应用Clip过滤器,将这些线段簇从点位置截断,从而变成从点出发的射线。这里的点都是在一个平面(Y=0.79 m)上,所以操作比较简单。将截断面的法向量改为(0,1,0),然后Apply。取消勾选Show Plane可以隐藏截断面。
这些射线簇是以向量的Vetors的Magnitude标注颜色的,实际上向量长度都为1,但由于数据精度问题小数点后面七八位数据不一致就会出现这种情况。可以通过以下步骤改为相同颜色的射线簇。
在左侧的Corloring中选中Edit color map,然后在弹出的Color Map Editor中选择色图的点,然后按enter进入点的颜色编辑界面选择颜色,选中点后通过左“←”右“→”键可以跳转到其他点,将所有的点颜色设置成一样后,所有射线变为相同颜色。
参考资料:
标签:射线,paraview,Apply,Vx,Vy,Vz,数据,过滤器,向量 From: https://www.cnblogs.com/blogLYP/p/18400974/according-to-point-coordinates-x-y-z-and-direct