import type { EdgeData } from '../spec'; import type { ElementDatum, Point, Vector2, Vector3 } from '../types'; /** * 判断是否为边数据 * * judge whether the data is edge data * @param data - 元素数据 | element data * @returns - 是否为边数据 | whether the data is edge data */ export function isEdgeData(data: Partial): data is EdgeData { if ('source' in data && 'target' in data) return true; return false; } /** * 判断是否为二维向量 * * Judge whether the vector is 2d * @param vector - 向量 | vector * @returns 是否为二维向量 | whether the vector is 2d */ export function isVector2(vector: Point): vector is Vector2 { return vector.length === 2; } /** * 判断是否为三维向量 * * Judge whether the vector is 3d * @param vector - 向量 | vector * @returns 是否为三维向量 | whether the vector is 3d */ export function isVector3(vector: Point): vector is Vector3 { return vector.length === 3; } /** * 判断是否为点 * * Judge whether the point is valid * @param p - 点 | point * @returns 是否为点 | whether the point is valid */ export function isPoint(p: any): p is Point { if (p instanceof Float32Array) return true; if (Array.isArray(p) && (p.length === 2 || p.length === 3)) { return p.every((elem) => typeof elem === 'number'); } return false; }