Browse Source

公式相关:G8前后视约束bug

yangyj 1 year ago
parent
commit
3f81550369

+ 4 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/LevelInfo.java

@@ -169,5 +169,9 @@ public class LevelInfo implements  Cloneable {
         }
         return true;
     }
+    /**获取最大允许高差*/
+    public double maxHeightDx(){
+        return getStep()-getMin();
+    }
 
 }

+ 11 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/TurnPoint.java

@@ -257,11 +257,13 @@ public class TurnPoint {
     }
 
     public static void test() {
-        for (int i = 0; i < 5; i++) {
+        for (int i = 0; i < 10; i++) {
             LevelInfo info = new LevelInfo();
-            info.setSightHeight(392.497+2.489);
+            info.setMin(0.4D);
+            info.setStep(4.6D);
+            info.setSightHeight(407.168);
             TurnPoint tp = new TurnPoint(info, new HashMap<>());
-            tp.setQ(1.256);
+            tp.setQ(0.538);
             tp.setSc(402.248);
             if(!tp.isVisible(false)) {
                 System.out.println("第" + (i + 1) + "次");
@@ -272,9 +274,11 @@ public class TurnPoint {
 
         }
     }
-/*    public static void main(String[] args) {
+/*
+    public static void main(String[] args) {
         test();
-    }*/
+    }
+*/
 
     public Boolean isNegativeQ(){
         return StringUtils.isNumber(q)&&getQ0L()<0;
@@ -285,7 +289,7 @@ public class TurnPoint {
     /**转点的核心处理算法,当测点不在测量范围会触发*/
     public List<TurnPoint> limit(Boolean negative) {
         List<TurnPoint> result = new ArrayList<>();
-        double step = levelInfo.getStep();
+        /*double step = levelInfo.getStep();*/
         /*负前视必须是表单传入,而非自动生成*/
         /*boolean fake=(!negative&&getQ0L()<0);*/
         boolean overRange=(!negative&&getQ0L()<levelInfo.getMin()) || getQ0L() > levelInfo.getStep();
@@ -299,7 +303,7 @@ public class TurnPoint {
         int loop = 0;
         do {
             TurnPoint tmp;
-            if (hd > step) {
+            if (hd > levelInfo.maxHeightDx()) {
                 double x = hdx();
                 tmp = createZd(x, higher, "ZD" + (levelInfo.getCloseZd().size()));
                 hd -= x;