HeightmapTerrainData

new LSGlobe.HeightmapTerrainData (options)

单个图块的地形数据,其中地形数据表示为高度图。高度图是从北到南,从西到东按行主要顺序排列的矩形高度数组。
Name Type Description
options Object Object with the following properties:
Name Type Default Description
buffer Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array 包含高度数据的缓冲区。
width Number 高度图的宽度(经度方向),以示例为单位。
height Number 高度图的高度(纬度方向),以示例为单位。
childTileMask Number 15 可选 一个位掩码,指示此图块的四个子级中的哪个子级存在。 如果设置了孩子的位,则当该图块也将请求几何形状 是必需的。如果清除该位,则不请求子图块,并且几何体为 而是从父级上采样。位值如下:
位位置 位值 子磁贴
0 1 西南
1 2 东南
2 4 西北
3 8 东北
waterMask Uint8Array 可选 如果有,此地形数据中包含的水面罩。水面具是正方形 Uint8Array或图像,其中值255表示水,值0表示土地。 还允许在0到255之间的值在陆地和水之间平滑融合。
structure Object optional An object describing the structure of the height data.
Name Type Default Description
heightScale Number 1.0 可选 乘以高度样本以获得的因子 高于heightOffset的高度,以米为单位。将heightOffset添加到结果中 乘以比例尺后的高度。
heightOffset Number 0.0 可选 要添加到最终高度的偏移量 以米为单位的高度。将高度样本乘以 heightScale。
elementsPerHeight Number 1 可选 缓冲区中组成单个高度的元素数 样品。通常为1,表示每个元素都是单独的高度样本。如果 大于1,则元素的数量一起形成高度样本,即 根据structure.elementMultiplier和structure.isBigEndian属性进行计算。
stride Number 1 可选 从第一个元素要跳过的元素数 一个高度到下一个高度的第一个元素。
elementMultiplier Number 256.0 可选 乘数用于计算高度值,当 stride属性大于1。例如,如果stride为4且strideMultiplier 是256,高度计算如下: `height =缓冲区[索引] +缓冲区[索引+ 1] * 256 +缓冲区[索引+ 2] * 256 * 256 +缓冲区[索引+ 3] * 256 * 256 * 256` 假设isBigEndian属性为false。如果为真,则顺序为 元素颠倒了。
isBigEndian Boolean false 可选 指示缓冲区中元素的字节序 stride属性大于1。如果此属性为false,则第一个元素为 低阶元素。如果为true,则第一个元素是高阶元素。
lowestEncodedHeight Number 可选 可以存储在高度缓冲区中的最小值。任何较低的高度 在使用' heightScale'和' heightOffset'进行编码后,此值将被限制为该值。例如,如果高度 buffer是一个' Uint16Array',该值应为0,因为' Uint16Array'不能存储负数。如果此参数是 未指定,不会强制执行最小值。
highestEncodedHeight Number 可选 可以存储在高度缓冲区中的最大值。任何更高的高度 在使用' heightScale'和' heightOffset'进行编码后,此值将被限制为该值。例如,如果高度 缓冲区是一个' Uint16Array',此值应为' 256 * 256-1'或65535,因为' Uint16Array'不能存储更大的数字 大于65535。如果未指定此参数,则不强制使用最大值。
encoding HeightmapEncoding HeightmapEncoding.NONE 可选 缓冲区上使用的编码。
createdByUpsampling Boolean false 可选 如果此实例是通过对另一个实例进行升采样创建的,则为true;否则为false。 否则为false。
Example:
var buffer = ...
var heightBuffer = new Uint16Array(buffer, 0, that._heightmapWidth * that._heightmapWidth);
var childTileMask = new Uint8Array(buffer, heightBuffer.byteLength, 1)[0];
var waterMask = new Uint8Array(buffer, heightBuffer.byteLength + 1, buffer.byteLength - heightBuffer.byteLength - 1);
var terrainData = new LSGlobe.HeightmapTerrainData({
  buffer : heightBuffer,
  width : 65,
  height : 65,
  childTileMask : childTileMask,
  waterMask : waterMask
});
See:

Members

此图块的功劳数组。

waterMask : Uint8Array|HTMLImageElement|HTMLCanvasElement

如果有,此地形数据中包含的水面罩。水面具是正方形Uint8Array或图像,其中值255表示水,值0表示土地。也允许在0到255之间的值在陆地和水之间平滑融合。

Methods

interpolateHeight (rectangle, longitude, latitude) Number

计算指定经度和纬度处的地形高度。
Name Type Description
rectangle Rectangle 该地形数据覆盖的矩形。
longitude Number 经度(弧度)。
latitude Number 弧度的纬度。
Returns:
指定位置的地形高度。如果位置 在矩形的外部,此方法将推断高度,这很可能是疯狂的 对于矩形以外的位置不正确。

isChildAvailable (thisX, thisY, childX, childY) Boolean

根据以下信息确定给定的子图块是否可用 HeightmapTerrainData.childTileMask 。假定给定的子图块坐标成为该图块的四个子之一。如果非子图块坐标为给定的话,将返回东南子磁贴的可用性。
Name Type Description
thisX Number 该(父)图块的图块X坐标。
thisY Number 该(父)图块的图块Y坐标。
childX Number 子图块的图块X坐标,以检查其可用性。
childY Number 子图块的图块Y坐标,以检查其可用性。
Returns:
如果子图块可用,则为true;否则为true。否则为假。

upsample (tilingScheme, thisX, thisY, thisLevel, descendantX, descendantY, descendantLevel) Promise.< HeightmapTerrainData >|undefined

对该地形数据进行上采样,以供后代图块使用。生成的实例将包含的子集在这种情况下,可以根据需要对高度样本进行插值。
Name Type Description
tilingScheme TilingScheme 该地形数据的切片方案。
thisX Number 平铺方案中此图块的X坐标。
thisY Number 平铺方案中此图块的Y坐标。
thisLevel Number 平铺方案中此图块的级别。
descendantX Number 我们正在对其进行采样的后代切片的切片方案中的X坐标。
descendantY Number 我们正在对其进行采样的后代切片的切片方案中的Y坐标。
descendantLevel Number 我们正在对其进行采样的后代切片的切片方案中的级别。
Returns:
对后代图块的高度图地形数据进行高采样的承诺, 或undefined(如果正在进行太多异步上采样操作并且请求已被执行) 推迟。

wasCreatedByUpsampling () Boolean

获取一个值,该值指示是否通过对较低分辨率进行上采样来创建此地形数据地形数据。如果此值为false,则数据是从其他来源获得的,例如就像从远程服务器上下载一样。对于实例,此方法应返回true从对 HeightmapTerrainData#upsample 的调用返回。
Returns:
如果此实例是通过上采样创建的,则为true;否则为false。否则为假。