UNPKG

@three3d/tools

Version:

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

123 lines 3.77 kB
import { Vector3, Matrix3, Quaternion } from "three"; import type { VectorInstance } from "./vector"; export interface FrenetFrame { /** * 切线;为z轴 */ tangent: Vector3; /** * 法线;作为x轴 */ normal: Vector3; /** * 副法线;作为y轴 */ binormal: Vector3; } export interface FrenetFrameLocation { /** * u或t的列表 */ ut: number; /** * 点列表 */ point: Vector3; /** * 长度信息 */ length: number; } export type FrenetFrameInfo = FrenetFrame & FrenetFrameLocation; /** * 调整由 tangent 和 normal 决定的 Frenet 坐标系,以使其互相垂直 * @remarks * 为了节约性能,该方法会改变 tangent 和 normal; * 遵守右手坐标系; * tangent:会作为 z 轴的方向; * normal:会作为 x 轴的方向 * binormal:会作为 y 轴的方向 * * * @param tangent - 已归一化的切线方向;会作为 z 轴的方向; * @param normal - 已归一化的法线方向;会作为 x 轴的方向 * @param fixNormal - 是否固定法线 * @param binormalResult - 存储副法线的向量;会作为 y 轴的方向 * @returns */ export declare function adjustFrenetFrame(tangent: Vector3, normal: Vector3, fixNormal?: boolean | null, binormalResult?: Vector3): FrenetFrame; export interface FrontUpFrame { /** * 向前的方向;为z轴 */ front: Vector3; /** * 向上的方向;作为y轴 */ up: Vector3; /** * 副法线;作为x轴 */ binormal: Vector3; } /** * 调整由 front 和 up 决定的坐标系,以使其互相垂直 * @remarks * 为了节约性能,该方法会改变 front 和 up ; * 遵守右手坐标系; * front:会作为 z 轴的方向; * up:会作为 y 轴的方向 * binormal:会作为 x 轴的方向 * * * @param front - 已归一化的向前的方向;会作为 z 轴的方向; * @param up - 已归一化的向上的方向;会作为 y 轴的方向 * @param fixUp - 是否固定up方向 * @param binormalResult - 存储副法线的向量;会作为 x 轴的方向 * @returns */ export declare function adjustFrontUpFrame(front: Vector3, up: Vector3, fixUp?: boolean | null, binormalResult?: Vector3): FrontUpFrame; /** * FrenetFrame 转为 FrontUpFrame * @param frame * @returns */ export declare function frenetFrameToFrontUpFrame(frame: FrenetFrame): FrontUpFrame; /** * FrontUpFrame 转为 FrenetFrame * @param frame * @returns */ export declare function frontUpFrameToFrenetFrame(frame: FrontUpFrame): FrenetFrame; /** * 生成一个用于调整方向的矩阵 * @param front - 表示前方的矩阵;会将 front 作为 z 轴 * @param up - 表示上方的矩阵,会将 up 作为 y轴 * @param fixUp - 是否固定 up;保证up不变 * @param result - 保存结果的变量 * @returns */ export declare function adjustOrientation(front: Vector3, up: Vector3, fixUp?: boolean | null, result?: Matrix3 | null): Matrix3; /** * 获取两个向量之间的绕轴旋转 * @param from - 旋转的起始向量 * @param to - 旋转的终点向量 * @param axis - 轴 * @param result * @returns */ export declare function getQuaternionBetweenVectorsAroundAxis(from: Vector3, to: Vector3, axis: Vector3, result?: Quaternion | null): Quaternion; /** * 计算从向量 from 到 向量 to 的 等比例缩放; * @remarks * 假设 from 和 to 共线 * @param from * @param to * @returns */ export declare function computeVectorScalar<Vec extends VectorInstance>(from: Vec, to: Vec): number; /** * 判断两个向量是否共线 */ export declare function isCollinear<Vec extends VectorInstance>(vec1: Vec, vec2: Vec): boolean; //# sourceMappingURL=math.d.ts.map