3D网格表面

Posted LightningChart

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3D网格表面相关的知识,希望对你有一定的参考价值。

图表是用SurfaceMeshSeries3D渲染的,这是一个serie类型,可以渲染一个连续的三维网格,每个单独的数据点都可以配置自己的颜色(也可以从一个附加的颜色表中动态查询)。

这个例子显示了一个3D网格表面,有各种不同的动态样式可以从用户界面上选择。 

 

图表是用SurfaceMeshSeries3D渲染的,这是一个serie类型,可以渲染一个连续的三维网格,每个单独的数据点都可以配置自己的颜色(也可以从一个附加的颜色表中动态查询)。 

 

网格的几何形状是通过将一个数据点矩阵扭曲成XYZ坐标来定义的 

在这个例子中,假想矩阵的行被扭曲成YX平面上的一个角度,列被扭曲成Z坐标以及一个半径,形成一个三维管 

 

这个例子中的网格有150*150(22 500)个数据点。 

 

SurfaceMeshSeries3D的数据格式 

SurfaceMeshSeries3D存储3种用户可修改的数据。 

每种类型的数据都有自己的失效方法。所有这些方法都可以被调用。 

 

回调函数。 

 

对网格的每个数据点进行回调。 

然后函数返回与该数据点相关的值。 

数据矩阵。 

 

数据值的多维数组。 

也可以不废止整个网格,而只废止其中的一部分。这可以通过附加第二个参数来实现,这个参数指定了修改的范围(GridRangeOptions)。 

 

几何图形地图 

网格上的每个数据点都与一个三维坐标(Point3D)有关。 

 

使用SurfaceMeshSeries3D.invalidateGeometryOnly可以使几何坐标失效。 

 

// Invalidate full meshes geometry coordinates by callback. 

SurfaceMeshSeries3D.invalidateGeometryOnly(( row, column, prev ) => ( 

    x: row, 

    y: column, 

    z: Math.pow(row + column * rowsAmount, 2) / (rowsAmount * columnsAmount) 

)) 

查询值图 

网格上的每个数据点都可以与一个数字查询值(Number)相关联 

 

这可以用来根据一个附加的颜色查找表(LUT)动态地给每个数据点着色 

 

请注意,需要通过设置系列的FillStyle为PalettedFill来启用查找值的着色 

 

 

Look-Up-Values是用SurfaceMeshSeries3D.invalidateValuesOnly进行无效处理。 

 

// Define Color Look-Up-Table. 

const lut = new LUT(  

    steps: [ 

        value: 0, color: ColorRGBA( 0, 0, 0 ) , 

        value: 50, color: ColorRGBA( 255, 0, 0 )  

    ], 

    interpolate: true 

) 

 

// Invalidate Look-Up-Values by data matrix. 

SurfaceMeshSeries3D.invalidateValuesOnly( 

    [ 

        // First row. 

        [0,0,0,0,0], 

        // Second row. 

        [10,10,10,10,10], 

        // and so forth... 

        [20,20,20,20,20], 

        [30,30,30,30,30], 

        [40,40,40,40,40], 

    ] 

) 

 

// Configure Series fill style as look up from table. 

SurfaceMeshSeries3D.setFillStyle( new PalettedFill( lut ) ) 

颜色图 

网格上的每个数据点都可以与一个颜色相关联。 

 

这可以用来给每个数据点涂上它自己的颜色。 

请注意,需要通过设置系列的FillStyle为IndividualPointFill来启用各个颜色的着色 

 

 

SurfaceMeshSeries3D.invalidateColorsOnly可以使颜色值失效。 

 

// Invalidate first row of Colors by callback. 

SurfaceMeshSeries3D.invalidateColorsOnly( 

    ( row, column, prev ) => new ColorHSV( column * 10 ), 

     

        row: start: 0, end: 1 , 

        column: start: 0, end: numberOfColumns  

     

) 

 

// Configure Series fill style as individual colors. 

SurfaceMeshSeries3D.setFillStyle( new IndividualPointFill() ) 

以上是关于3D网格表面的主要内容,如果未能解决你的问题,请参考以下文章

如何用hypermesh生成包含interface的流体网格

在 Matlab 中插值 3D 圆柱的表面

VTK 显示3D网格线

3D 封闭网格汽车对象的体积

将网格文件转换为 STL

点云转3D网格Python