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;
|
}
|
}
|