自动化立体仓库 - WCS系统
#fs
lsh
2024-09-10 396123603febc184ac16d2a28ae72a2df716d776
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package com.zy.asrs.utils;
 
import com.core.common.Arith;
import com.core.common.Cools;
import com.zy.core.properties.SlaveProperties;
 
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
 
/**
 * Created by vincent on 2020/8/27
 */
public class Utils {
 
    private static final DecimalFormat fmt = new DecimalFormat("##0.00");
 
    public static float scale(Float f){
        if (f == null || f == 0f || Float.isNaN(f)) {
            return 0f;
        }
        return (float) Arith.multiplys(2, f, 1);
    }
 
    /**
     * 通过库位号获取 排
     */
    public static int getRow(String locNo) {
        if (!Cools.isEmpty(locNo)) {
            return Integer.parseInt(locNo.substring(0, 2));
        }
        throw new RuntimeException("库位解析异常");
    }
 
    /**
     * 通过库位号获取 排
     */
    public static int getBay(String locNo) {
        if (!Cools.isEmpty(locNo)) {
            return Integer.parseInt(locNo.substring(2, 5));
        }
        throw new RuntimeException("库位解析异常");
    }
 
    /**
     * 通过库位号获取 排
     */
    public static int getLev(String locNo) {
        if (!Cools.isEmpty(locNo)) {
            return Integer.parseInt(locNo.substring(5, 7));
        }
        throw new RuntimeException("库位解析异常");
    }
 
    public static void main(String[] args) {
        double[] lev = RingThroughXY(183.0, 1830.0);
        System.out.printf("点的坐标为: (%.2f, %.2f)%n", lev[0], lev[1]);
    }
 
    public static double[] RingThroughXY(double a,double b) {
//        while (true){
//            if (b>=a){
//                b=b-a;
//            }else {
//                break;
//            }
//        }
        double l = b/a;
        // 已知数据
        double circumference = 314; // 圆周长
        double arcLength = 314*l; // 给出的弧长
 
        // 计算圆的半径
        double radius = circumference / (2 * Math.PI);
 
        // 圆心坐标
        double centerX = 50;
        double centerY = 50;
 
        // 求弧度
        double theta = arcLength / radius;
 
        // 计算点的坐标
        double x = 100-(centerX + radius * Math.cos(theta));
        double y = centerY + radius * Math.sin(theta);
 
        return new double[]{x,y};
    }
 
    public static double[] RingThroughXY2(double a,double b) {
        double l = b / a;
 
        // 圆的已知参数
        double radius = 48; // 半径为48
//        double circumference = ; // 计算圆周长
        double arcLength = 2 * Math.PI * radius * l; // 给出的弧长
 
        // 圆心坐标
        double centerX = 51;
        double centerY = 49;
 
        // 求弧度
        double theta = arcLength / radius;
 
        // 计算点的坐标
        double x = 100-(centerX + radius * Math.cos(theta));
        double y = centerY + radius * Math.sin(theta);
 
        return new double[]{x, y};
    }
 
 
}