//修偏移 export default class PatchOffset { static PI = Math.PI static PEN_DISTANCE(penType) { switch (penType) { case 111: return 2.9413 case 201: return 2.9413 case 130: return 2.8 default: return 2.8 } } static PEN_SIZE(penSize) { switch (penSize) { case 12: return 1.524 case 16: return 2.031 default: return 1.524 } } // constructor(penType, penSize) { //距离 this.distance = PatchOffset.PEN_DISTANCE(penType) //间距 this.size = PatchOffset.PEN_SIZE(penSize) // this.angleX = 0 // this.angleY = 0 // this.lastAngle = 0 } /** * @name * @param {Number} currentAngle 当前角度 */ angleToOffsetX(currentAngle) { //弧度 const radian = Math.PI * (currentAngle + 180 % 360) / 180 let angleOffsetX = (this.distance * Math.cos(radian)) angleOffsetX /= this.size return angleOffsetX } //修复 y 偏移 angleToOffsetY(currentAngle) { //弧度 const radian = Math.PI * (currentAngle + 180 % 360) / 180 let angleOffsetY = this.distance * Math.sin(radian) * -1 angleOffsetY /= this.size return angleOffsetY } // angleAndSensitivityLevelCheck(dot) { let xa = 0 let xb = 0 let ya = 0 let yb = 0 if (dot.dotType === 'PEN_DOWN') { this.angleX = this.angleToOffsetX(dot.angle) this.angleY = this.angleToOffsetY(dot.angle) } xa = this.angleX xb = ((this.angleX - xa) * 100) ya = this.angleY yb = ((this.angleY - ya) * 100) dot.x -= xa dot.y -= xb if (dot.fx < 0) { dot.fx += 100 dot.x -= 1 } else if (dot.fx >= 100) { dot.fx -= 100 dot.x += 1 } dot.y -= ya dot.fy -= yb if (dot.fy < 0) { dot.fy += 100 dot.y -= 1 } else if (dot.fy >= 100) { dot.fy -= 100 dot.y += 1 } dot.ab_x = dot.x + dot.fx / 100 dot.ab_y = dot.y + dot.fy / 100 return dot } }