根据UV风计算风速风向,根据风速与风向计算UV风
代码如下public static void main(String[] args) {BigDecimal u = new BigDecimal(-10);BigDecimal v = new BigDecimal(10);BigDecimal[] dirAndSpeed = getDirAndSpeed(u, v);...
·
风速风向计算,参考Wind Direction Quick Reference | Earth Observing Laboratory实现
代码如下
public static void main(String[] args) {
double u = -10;
double v = 10;
double[] dirAndSpeed = getDirAndSpeed(u, v);
System.out.println("speed:" + dirAndSpeed[0]);
System.out.println("dir:" + dirAndSpeed[1]);
double[] uv = getUV(dirAndSpeed[0], dirAndSpeed[1]);
System.out.println("u:" + uv[0]);
System.out.println("v:" + uv[1]);
}
/**
* 计算风向风速
* 正北风为0或360
*
* @param u u经向风分量(x)
* @param v v纬向风分量(y)
* @return BigDecimal[]
*/
private static double[] getDirAndSpeed(double u, double v) {
double ws = Math.sqrt(Math.pow(u, 2) + Math.pow(v, 2));
double wd = (270 - Math.toDegrees(Math.atan2(v, u))) % 360d;
return new double[]{ws, wd};
}
/**
* 计算UV向风
*
* @param speed 风速
* @param dir 风向
* @return BigDecimal[]
*/
private static double[] getUV(double speed, double dir) {
double radians = Math.toRadians(dir);
double u = -speed * Math.sin(radians);
double v = -speed * Math.cos(radians);
return new double[]{u, v};
}
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)