import type { IVector2, IVector3 } from "type-tls"; import { Vector3 } from "three"; import type { GradientParams, SphereParticleVolumeFeature } from "./type"; /** * 热力值及其相关信息 */ export type HeatAccumulateValue = Required> & GradientParams; /** * 热力值累积函数 * @remarks * 当某一个点处理多个热力球区域内时,需要考虑多个热力球在该点的累积效果,通过该函数来获取最终的累积结果 * @param values - 值的信息列表 * @param clim - 默认的映射区间 * @returns 累积后的最终值 */ export type HeatValuesAccumulate = (values: HeatAccumulateValue[], clim: IVector2) => number; /** * 默认的值累积函数 * @param values * @param clim * @returns */ export declare function valuesAccumulate_Default(values: HeatAccumulateValue[], clim: IVector2): number; /** * 热力粒子体积特性 */ export interface HeatParticleVolumeFeature extends SphereParticleVolumeFeature { /** * 值累积函数 * @remarks * 当某一个点处理多个热力球区域内时,需要考虑多个热力球在该点的累积效果,通过该函数来获取最终的累积结果 * @defaultValue valuesAccumulate_Default */ valuesAccumulate?: HeatValuesAccumulate; } /** * 热力点 */ export type HeatParticleVolumeFeaturePoint = HeatParticleVolumeFeature & IVector3; /** * 热力点信息 */ export type HeatParticleVolumeFeaturePointInfo = Required; /** * 热力向量信息 */ export type HeatParticleVolumeFeatureVectorInfo = Required & Vector3; /** * 计算 Data3D 点所需要的额外信息 */ export type Data3DPointExtraInfo = { /** * 存放 Data3D 的数组 * @remarks * 长度应该是 `size.x * size.y * size.z` */ data3D: number[]; /** * Data3D的尺寸 */ size: IVector3; /** * 计算标记数组 * @remarks * 与 data3D 一样长,用于记录哪些像素已经被计算过了 */ tags: (undefined | true)[]; }; /** * 根据热力点来计算并生成相关的3D数据 * @param pointInfo - 点信息 * @param extraInfo - 额外的信息 * @param intersects - 相交的点列表 * @returns */ export declare function computeHeatData3DForPoint(pointInfo: HeatParticleVolumeFeaturePointInfo, extraInfo: Data3DPointExtraInfo, intersects: HeatParticleVolumeFeaturePointInfo[]): { particles: Vector3[]; values: number[]; }; /** * 创建热力3D数据的选项 */ export interface HeatData3DOptions extends HeatParticleVolumeFeature { /** * 热力点列表 */ points: HeatParticleVolumeFeaturePoint[]; /** * Data3D 的尺寸 * @defaultValue 从原点到 points 的AABB包围盒最大点的空间尺寸 */ size?: IVector3 | null; } /** * 创建热力3D数据 * @param options * @returns */ export declare function createHeatData3D(options: HeatData3DOptions): { data: number[]; size: Vector3; }; //# sourceMappingURL=createHeatData3D.d.ts.map