UNPKG

@three3d/tools

Version:

@three3d/tools 提供了 ThreeJS 常用的工具库

175 lines 4.52 kB
import { Vector3, CurvePath, LineCurve3, LineCurve, Line3 } from "three"; import type { Vector, BufferAttribute, InterleavedBufferAttribute, Vector2 } from "three"; /** * 获取每个点对应的长度 * @param positionAttribute * @returns */ export declare function getLengthsOfPositionAttribute(positionAttribute: BufferAttribute | InterleavedBufferAttribute): { lengths: number[]; length: number; }; /** * 获取每个点对应的长度 * @param points * @returns */ export declare function getLengthsOfPoints(points: Vector3[]): { lengths: number[]; length: number; }; /** * 获取折线的信息 * @param points * @returns */ export declare function getLinesInfo(points: Vector3[]): { lines: Line3[]; lengths: number[]; length: number; }; /** * 通过顶点列表创建其所围成的折线的线段列表 * @param points * @returns */ export declare function createLines(points: Vector3[]): Line3[]; /** * 获取点的投影线 * @remarks * 投影线是点在线段上的垂足落在线段内的线 * * @param point * @param lines * @returns */ export declare function getProjectionLines(point: Vector3, lines: Line3[]): { lines: Line3[]; indexs: number[]; }; /** * 点与一组线之间的最近信息 */ export interface ClosestDistanceInfoOfPointToLines { /** * 最近的线 */ line: Line3; /** * 最近线的索引 */ index: number; /** * 最近的线段距离 */ clampDist: number; /** * 距离最近的线段上的点 */ clampPoint: Vector3; /** * 最近的点在其所在线上的 t 值 */ t: number; /** * 线段上最近的点在其所在线段上的 t 的值 */ clampT: number; } /** * 获取最近的点相关的信息 * @param point * @param lines * @returns */ export declare function getClosestDistanceInfoOfPointToLines(point: Vector3, lines: Line3[]): ClosestDistanceInfoOfPointToLines; export interface DistanceInfoOfPointToLines { /** * 根据点与线的距离进行排序后的索引 */ distSortIndexs: number[]; /** * 点到各个线段的距离 */ clampDists: number[]; /** * 点到各个线段上最近的点 */ clampPoints: Vector3[]; /** * 点到各个线上最近的点的 t 的值 */ ts: number[]; /** * 点到各个线段上最近的点的 t 的值 */ clampTs: number[]; } /** * 获取点到所有线的距离信息 * @param point * @param lines * @returns */ export declare function getDistanceInfoOfPointToLines(point: Vector3, lines: Line3[]): DistanceInfoOfPointToLines; /** * 创建折线曲线 * @param points - 折线的顶点列表 * @returns */ export declare function createPolylineCurve<V extends Vector>(points: V[]): CurvePath<V>; /** * 2维和3维的LineCurve实例的类型 */ export type LineCurveInstance<Vec extends Vector3 | Vector2> = Vec extends Vector3 ? LineCurve3 : LineCurve; /** * 2维和3维的LineCurve类的类型 */ export type LineCurveClass<Vec extends Vector3 | Vector2> = Vec extends Vector3 ? typeof LineCurve3 : typeof LineCurve; /** * 创建 LineCurve * @remarks * 会根据入参自动判断是二维曲线,还是三维曲线 * @param start * @param end * @returns */ export declare function createLineCurve<Vec extends Vector3 | Vector2>(start: Vec, end: Vec): LineCurveInstance<Vec>; /** * 通过顶点列表创建其所围成的折线的线段列表 * @param points * @returns */ export declare function createLineCurves<Vec extends Vector3 | Vector2>(points: Vec[]): LineCurveInstance<Vec>[]; /** * 通过固定up方向的方式计算折线的的 FrenetFrames * @remarks * 最后一个顶点的 tangent,normal,binormal 与前一个顶点的相同 * @param points * @param up * @returns */ export declare function computePolylineFrenetFramesByFixUp(points: Vector3[], up: Vector3): { tangents: Vector3[]; normals: Vector3[]; binormals: Vector3[]; lengths: number[]; length: number; lines: Line3[]; }; /** * 计算折线的的 FrenetFrames * @remarks * 最后一个顶点的 tangent,normal,binormal 与前一个顶点的相同 * @param points * @param up * @returns */ export declare function computePolylineFrenetFrames(points: Vector3[], up: Vector3): { tangents: Vector3[]; normals: Vector3[]; binormals: Vector3[]; lengths: number[]; length: number; }; //# sourceMappingURL=polyline.d.ts.map