THING.DATAVIZ.Utils()

工具类

new Utils()

Methods

static addColorToModelByXYZData(param) → {Object}

基于离散的XYZ数据为3D模型表面进行着色

Parameters:
Name Type Description
param Object 参数对象
Properties
Name Type Attributes Default Description
entity Object 实体对象
texture3D THING.T3D.Texture3D 体纹理 如果传texture3D会忽略data,直接使用
data Array 数据数组 data extent minMaxValue gridSize都是为了计算texture3D 如果已经传了texture3D 后面的参数可以不传
gradient Object <optional>
{ 0.0: "rgb(0,255,0)", 0.5: "rgb(255,255,0)", 1: "rgb(255,0,0)" } 色带
extent Object <optional>
场数据的范围(如果不传,基于模型包围盒自动计算) 包含字段minX,maxX,minY,maxY,minZ,maxZ
minMaxValue Object <optional>
最小最大值对象(如果不传,基于data自动计算) 包含字段min,max
gridSize Number <optional>
网格大小,即基于离散数据生产的场数据每个网格的尺寸(单位:米),如果不传则根据数据范围自动计算,以模型包围盒三个维度最小尺寸的1/10
blending Boolean <optional>
false 是否混合
depthWrite Boolean <optional>
false 是否写入深度,默认为false
drawSide Number <optional>
THING.T3D.DRAW_SIDE.DOUBLE 绘制面,默认为THING.T3D.DRAW_SIDE.DOUBLE
opacity Number <optional>
0.5 透明度,默认为0.5
power Number <optional>
2 透明度衰减系数
glowInverse Boolean <optional>
false 是否反向发光,默认为false
Returns:
Object - 包含材质和原始材质缓存的对象

static computeScalarData(data) → {Object}

计算给定三维数组的每个点的标量值 标量值的计算公式是 Math.sqrt(u*u+v*v+w*w)

Parameters:
Name Type Description
data Object {u,v,w} 三维数组
Returns:
Object - {data,minValue,maxValue} 根据三个方向分量计算出的的标量,标量最小值,标量最大值

static generateImage(matrix, minVal, maxVal, mcolorMap) → {HTMLCanvasElement}

生成表示矩阵数据的图像。

此函数通过归一化矩阵数据,将其映射到指定的色带上,然后将结果渲染为一个Canvas图像。通过计算每个矩阵元素的颜色并填充到相应的像素位置,从而生成一个图像。
Parameters:
Name Type Description
matrix Array.<Array.<number>> 输入的二维矩阵数据。
minVal number 矩阵数据的最小值,用于归一化。
maxVal number 矩阵数据的最大值,用于归一化。
mcolorMap Object 用于映射归一化值到颜色的色带。
Returns:
HTMLCanvasElement - - 包含生成图像的Canvas元素。

static getGradientTexture(grad) → {Texture2D}

根据给定的渐变对象生成一个256x1的渐变纹理。

Parameters:
Name Type Description
grad Object 包含渐变颜色停止点的对象 例如:{0:"rgb(0,255,0)",0.5:"{255,255,0}",1:"rgb(255,0,0)"}
Returns:
Texture2D - 一个256x1的T3D渐变纹理。

static getGridData(data) → {Object}

计算给定3D网格的x,y,z方向的唯一坐标数据 每个方向的坐标数据是从min到max,间隔为delta

Parameters:
Name Type Description
data Object {minX,maxX,minY,maxY,minZ,maxZ,dimX,dimY,dimZ} 3D网格的数据
Returns:
Object - {x,y,z} 3D网格的x,y,z方向的唯一坐标数据

static getImageTextureFromVectorFieldData(windData, gradient, encoding) → {ImageTexture}

根据风场数据和颜色渐变生成一个图像纹理对象

Parameters:
Name Type Description
windData Object 风场数据
gradient Object 颜色渐变
encoding ImageEncodingType 图像编码方式
Returns:
ImageTexture - 生成的图像纹理对象

static getMax(arr) → {number}

返回给定数组中的最大元素,该方法支持长度很大的数组。

Parameters:
Name Type Description
arr Array.<number> 要查找最大值的数组。
Returns:
number - 数组中的最大元素。

static getMin(arr) → {number}

返回给定数组中的最小元素,该方法支持长度很大的数组。

Parameters:
Name Type Description
arr Array.<number> 要查找最小值的数组。
Returns:
number - 数组中的最小元素。

static nextPowerOfTwo(value) → {number}

返回比给定值的大的下一个2的n次幂。

Parameters:
Name Type Description
value number 输入值。
Returns:
number - 下一个2的幂。

static revertModelMaterial(entity, originMaterialCache) → {void}

还原模型中所有对象的材质为原始材质。

Parameters:
Name Type Description
entity THING.Entity 模型对象
originMaterialCache Object 原始材质的缓存。
Returns:
void