Browse Source

修复宽度夹角问题

guohui.deng 7 years ago
parent
commit
c653280f04
1 changed files with 7 additions and 7 deletions
  1. 7 7
      index.js

+ 7 - 7
index.js

@@ -314,17 +314,17 @@ function getBearingPoint(point, lastBearing, bearing, airlineWidth) {
     if(!lastBearing)
         lastBearing = bearing
 
-    let halfAngle = (180 - bearing + lastBearing)/2 // 两条线的夹角的一半
-    let rightBearing = bearing + halfAngle
+    let halfAngle = (180  + bearing - lastBearing)/2 // 两条线的夹角的一半,普通角度
+    let rightBearing = bearing - halfAngle //这里需要是真北角
     let leftBearing = 180 + rightBearing
 
-    /* let fixAngle = Math.abs(halfAngle) > 180 ? Math.abs(halfAngle) : halfAngle
-     * let leftWidth = airlineWidth/Math.sin(fixAngle)
-     * let rightWidth = airlineWidth/Math.sin(fixAngle)
-     * console.log('width is', airlineWidth, leftWidth, rightWidth, fixAngle, halfAngle) */
-
     let leftWidth = airlineWidth
     let rightWidth = airlineWidth
+    if(halfAngle != 90) { //直线上面是 90 度,不需要计算斜边
+        let angleToDecimal = halfAngle*Math.PI/180
+        leftWidth = Math.abs(airlineWidth/Math.sin(angleToDecimal))
+        rightWidth = Math.abs(airlineWidth/Math.sin(angleToDecimal))
+    }
 
     let leftPoint = point.destinationPoint(leftWidth, leftBearing)
     let rightPoint = point.destinationPoint(rightWidth, rightBearing)