123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- //修偏移
- 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
- }
- }
|