zhaowenyu
2026-01-06 4e8a1c02b45f72f6377603778e8c8746ed82f374
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
package com.ard.work.util;
 
public class CameraUtil {
 
    // 根据相机类型和变焦系数计算视场角度
    public static Float getFieldAngleFromZoom(Integer source, Float zoomFactor) {
        //处理视场角度
        Float fieldAngle = 66.6F;
        //空值的情况
        if (source == null)
            fieldAngle = 66.6F;
        else if (source == 0) {
            //广角
            fieldAngle = (float) 82.9;
        } else if (source == 2) {
            //红外
            fieldAngle = (float) 40.6;
        } else {
            //变焦相机
            float zoom;
            if (zoomFactor.isNaN())
                zoom = 1;
            else if (zoomFactor < 1)
                zoom = 1;
            else if (zoomFactor > 200)
                zoom = 200;
            else
                zoom = zoomFactor;
            fieldAngle = (float) (70.395 * Math.pow(zoom, -0.952));
            if (fieldAngle < 4)
                fieldAngle = 4F;
            else if (fieldAngle > 66.6)
                fieldAngle = 66.6F;
        }
        return fieldAngle;
    }
    // 根据相机类型和视场角度计算变焦系数
    public static Float getZoomFromFieldAngle(Integer source, Float fieldAngle) {
        //处理视场角度
        Float zoomFactor = 1F;
        //空值的情况
        if (source == null)
            zoomFactor = 1F;
        else if (source == 0) {
            //广角
            zoomFactor = 1F;
        } else if (source == 2) {
            //红外
            zoomFactor = 1F;
        } else {
            //变焦相机
            float fieldAngleModify;
            if (fieldAngle.isNaN())
                fieldAngleModify = 66.6F;
            else if (fieldAngle < 4)
                fieldAngleModify = 4;
            else if (fieldAngle > 66.6)
                fieldAngleModify = 66.6F;
            else
                fieldAngleModify = fieldAngle;
            zoomFactor = (float) (Math.pow((fieldAngleModify / 70.395), 1 / -0.952));
            if (zoomFactor < 1)
                zoomFactor = 1F;
            else if (zoomFactor > 200)
                zoomFactor = 200F;
        }
        return zoomFactor;
    }
}