package com.ard.tianyu.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; } }