class Filter { N = 4 num = 10 dataArray = null // 初始化 constructor() { this.dataArray = [] } // 初始化队列 initQueue() { this.dataArray = [] } // 在队列首插入队列 addQueueFront(value) { this.dataArray.unshift(value) } // 队列求和 sumQueue() { let sum = 0 for (let index = 0; index < this.N; index++) { sum += this.dataArray[index] } return sum } Smoothing_arithmetic_mean_FILTER() { let m = 0 let re = 0 let adder = 0 for (let i = 0; i < this.N; i++) { if (this.dataArray[i] > 0) { adder += this.dataArray[i] m++ } } if (m >= this.N) { re = this.sumQueue() / this.N } else { re = adder / m } return re } } // function joinTogether(x, fx) { return x + fx / 100 } const dataFilterX = new Filter() const datafilterY = new Filter() function smooth(dot) { let dotX = joinTogether(dot.x, dot.fx) let dotY = joinTogether(dot.y, dot.fy) if (dot.dotType === 'PEN_DOWN') { dataFilterX.initQueue() datafilterY.initQueue() dataFilterX.addQueueFront(dotX) // console.log(dataFilterX.dataArray); datafilterY.addQueueFront(dotY) // console.log(datafilterY.dataArray); let dotAx = dataFilterX.Smoothing_arithmetic_mean_FILTER() let dotAy = datafilterY.Smoothing_arithmetic_mean_FILTER() return { ...dot, ab_x: dotAx, ab_y: dotAy } } else if (dot.dotType === "PEN_MOVE" && dot.force !== 1 && dot.force !== 2) { dataFilterX.addQueueFront(dotX) // console.log(dataFilterX.dataArray); datafilterY.addQueueFront(dotY) // console.log(datafilterY.dataArray); let dotAx = dataFilterX.Smoothing_arithmetic_mean_FILTER() let dotAy = datafilterY.Smoothing_arithmetic_mean_FILTER() return { ...dot, ab_x: dotAx, ab_y: dotAy } } else if (dot.tydotTypepe == "PEN_UP" || dot.force === 2 || dot.force === 1 || dot.force === 0) { let dotAx = dotX let dotAy = dotY return { ...dot, ab_x: dotAx, ab_y: dotAy } } } export default smooth