/**
 * 当向量以数组的方式出现，一个计算单元库
 * @Description  : 向量数组
 * @Author       : 赵耀圣
 * @QQ           : 549184003
 * @Date         : 2021-08-02 15:09:33
 * @LastEditTime : 2021-08-02 15:50:16
 * @FilePath     : \cga.js\src\math\VecArray.ts
 */
import { ArrayList } from '../struct/data/ArrayList';
export declare class vector {
    /**
     * 检测相邻没有重复点
     */
    static uniqueNeighbor(vs: number[], component?: number): number[];
    /**
     * 去除任意重复点
     * @param vs 向量数组
     * @param component 向量组件数量
     * @returns 无重复向量数组
     */
    static unique(vs: number[], component?: number): number[];
    /**
     *  翻转向量数组
     * @param vecs 向量数组
     * @param component  组件数量
     * @returns
     */
    static reverse(vecs: number[], component?: number): number[];
    /**
     * 点积
     * @param vecs
     * @returns
     */
    static dot(...vecs: number[]): number;
    /**
     * 长度平方
     * @param vecs
     * @returns
     */
    static distanceSq(...vecs: number[]): number;
    /**
     * 长度
     * @param vecs
     * @returns
     */
    static distance(...vecs: number[]): number;
    /**
     * 相加
     * @param vecs
     * @returns
     */
    static add(...vecs: number[]): number[] | (number & any[]);
    /**
     * 相减
     * @param vecs
     * @returns
     */
    static sub(...vecs: number[]): number[];
    /**
     * 相乘
     * @param vecs
     * @returns
     */
    static mul(...vecs: number[]): number[] | (number & any[]);
    /**
     * 获取矢量数组的i个矢量
     * @param vecs
     * @param i
     * @param component
     * @returns
     */
    static getVecAt(vecs: number[], i: number, component?: number): number[];
    /**
     * 在第 i 个位置插入一个向量
     * @param vecs
     * @param i
     * @param vec
     */
    static insertAt(vecs: number[], i: number, ...vec: number[]): void;
    /**
     * 是否逆时针
     * counterclockwise
     */
    static isCCW<T>(shape: Array<T> | ArrayList<T>, component?: number): boolean;
}
