xtorcga
Version:
Xtor Compute Geometry Algorithm Libary 计算几何算法库
76 lines (75 loc) • 2.6 kB
TypeScript
import { Vec3 } from '../../math/Vec3';
import { Point } from './Point';
import { ArrayList } from '../data/ArrayList';
import { Mat4 } from '../../math/Mat4';
export interface IDistanceResut {
isNode: boolean;
point: Vec3;
direction: Vec3;
}
export declare class Path<T extends Vec3> extends ArrayList<T> {
_closed: boolean;
_calcNoraml: boolean;
/**
*
* @param vs 假定是没有重复的点集
* @param closed
* @param calcNormal
*/
constructor(vs: Array<T> | ArrayList<T>, closed?: boolean, calcNormal?: boolean);
init(calcNormal: boolean): void;
set closed(val: boolean);
get closed(): boolean;
get tlen(): number;
applyMat4(mat4: Mat4): void;
scale(x: number, y: number, z: number): void;
/**
* 截取一段从from到to的path
* @param {Number} from
* @param {Number} to
*/
splitByFromToDistance(from?: number, to?: number): Path<never> | null;
/**
* 从起点出发到距离等于distance位置 的坐标 二分查找
* @param {Number} distance
*/
getPointByDistance(arg_distance: number, left?: number, right?: number): IDistanceResut | null;
/**
* 从起点出发到距离等于distance位置 的坐标 二分查找
* @param {Number} distance
*/
getPointByDistancePure(arg_distance: number, left?: number, right?: number): Vec3 | null;
/**
* 平均切割为 splitCount 段
* @param {Number} splitCount
* @returns {Path} 新的path
*/
splitAverage(splitCount: number): Path<T>;
/**
* 通过测试
* 平均切割为 splitCount 段
* @param {Number} splitCount
* @param {Boolean} integer 是否取整
* @returns {Path} 新的path
*/
splitAverageLength(splitLength: number, integer?: boolean): Path<T>;
/**
*
* @param {...any} ps
*/
add(...ps: Vec3[] | Point[]): void;
/**
* @description : 计算一段线段的总长度
* @param {ArrayLike} ps
* @return {number} 总长度
*/
static totalMileages(ps: ArrayLike<Vec3>): number;
/**
* @description : 获取没一点的里程 里程是指从第一个点出发的长度
* @param {ArrayLike} ps 里程上的点集
* @param {boolean} normalize 是否归一化
* @return {number[]} 每一个点的里程数组
* @example :
*/
static getPerMileages(ps: ArrayLike<Vec3>, normalize?: boolean, totalMileage?: number): number[];
}