@three3d/tools
Version:
@three3d/tools 提供了 ThreeJS 常用的工具库
123 lines • 3.77 kB
TypeScript
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