import { Vec3, IVec3, IVec2 } from '../math/Vec3'; import { Vec2 } from '../math/Vec2'; import { AxisPlane } from './trianglution'; import { IGeometry } from '../render/geometry'; import { ArrayList } from '../struct/data/ArrayList'; export interface ILinkSideOption { side0: { x: number; y: number; z: number; index?: number; }[] | number[]; side1: { x: number; y: number; z: number; index?: number; }[] | number[]; holes0?: Array>; holes1?: Array>; shapeClosed?: boolean; autoUV?: boolean; uvScalars?: number[]; segs?: []; } /** * 常用shape几何操作 */ /** * @description : 缝合两个边 不提供uv生成 uv有@linkSides 生成 * @param { ILinkSideOption } options * @returns { Array} 三角形数组,每三个为一个三角形 * @example : */ export declare function linkSide(options: ILinkSideOption): number[]; /** * 缝合shape集合 * @param {Array} shapes 路基 点集的集合, 每个shape的点数量一致 * @param {Boolean} sealStart 每一个shape是否是封闭的界面 默认false * @param {Boolean} isClosed 每一个shape是否是封闭的界面 默认false * @param {Boolean} isClosed2 每一个shape是否是封闭的首尾 默认false * @returns {Array} 返回三角形集合 如果有所用范围索引,否则返回顶点 */ export interface ILinkSideOptions { shapes: Array>; orgShape?: Array; orgHoles?: any; sealStart?: boolean; sealEnd?: boolean; shapeClosed?: boolean; pathClosed?: boolean; index?: { index: number; }; autoIndex?: boolean; generateUV?: boolean; axisPlane?: AxisPlane; holes?: Array>[]; } /** * @description : 链接多个shape 生成几何体 * @param {ILinkSideOptions} optionsILinkSideOptions { * shapes: Array>; * sealStart?: boolean,//开始封面 * sealEnd?: boolean;//结束封面 * shapeClosed?: boolean,//shape是否闭合 * pathClosed?: boolean,//路径是否闭合 * index?: { index: number }, * generateUV?: boolean * } * * @return {*} * @example : * */ export declare function linkSides(options: ILinkSideOptions): IGeometry; export interface IExtrudeOptions { fixedY?: boolean; shapeClosed?: boolean; isClosed2?: boolean; textureEnable?: boolean; textureScale?: Vec2; smoothAngle?: number; sealStart?: boolean; sealEnd?: boolean; normal?: Vec3; } export interface IExtrudeOptionsEx { shape: Array; path: Array; ups?: Array; up?: Vec3 | IVec3; right?: Vec3; shapeClosed?: boolean; pathClosed?: boolean; textureEnable?: boolean; smoothAngle?: number; enableSmooth?: boolean; sealStart?: boolean; sealEnd?: boolean; normal?: Vec3; autoIndex?: boolean; axisPlane?: AxisPlane; generateUV?: boolean; index?: { index: number; }; holes?: Array[]; } /** * @description : 挤压形状生成几何体 * @param {IExtrudeOptionsEx} options * IExtrudeOptionsEx { * shape: Array;//shape默认的矩阵为正交矩阵 * path: Array;//挤压路径 * ups?: Array; * up?: Vec3 | IVec3; * shapeClosed?: boolean;//闭合为多边形 界面 * pathClosed?: boolean;//首尾闭合为圈 * textureEnable?: boolean; * smoothAngle?: number; * sealStart?: boolean; * sealEnd?: boolean; * normal?: Vec3,//面的法线 * autoIndex?: boolean, * index?: { index: number } * holes?: Array[] *} * @return {IGeometry} * @example : * */ export declare function extrude(options: IExtrudeOptionsEx): IGeometry; /** * 挤压 * @param {Polygon|Array } shape 多边形或顶点数组 * @param {Path|Array } path 路径或者或顶点数组 * @param {Object} options { * isClosed: false,闭合为多边形 界面 * isClosed2: false, 闭合为圈 * textureEnable: true, 计算纹理坐标 * textureScale: new Vec2(1, 1),纹理坐标缩放 * smoothAngle: Math.PI / 180 * 30,大于这个角度则不平滑 * sealStart: true, 是否密封开始面 * sealEnd: true,是否密封结束面} */ export declare function extrude_obsolete(shape: ArrayList, arg_path: Array | any, options?: IExtrudeOptions): { vertices: any[]; index: number[] | undefined; uvs: any[]; }; export declare enum JoinType { Square = 0, Round = 1, Miter = 2, Bevel = 0 } export declare enum EndType { Square = 0, Round = 1, Butt = 2 } export interface IExtrudeOptionsNext { shape: Array; path: Array; up?: Array | Vec3 | IVec3; right?: Array | Vec3; shapeClosed?: boolean; pathClosed?: boolean; textureEnable?: boolean; shapeCenter?: Vec3; smoothAngle?: number; enableSmooth?: boolean; sealStart?: boolean; sealEnd?: boolean; normal?: Vec3; autoIndex?: boolean; axisPlane?: AxisPlane; generateUV?: boolean; index?: { index: number; }; holes?: Array[]; jtType?: JoinType; etType?: EndType; bevelSize?: any; } /** * 将路径看做挤压操作中心 * * @param shape * @param followPath * @param options */ export declare function extrudeNext(options: IExtrudeOptionsNext): IGeometry;