Wechat: yu389741| Email: gisdqy@163.com

# 关于风向的u、v分量，及根据uv计算风向公式

### u为正，表示西风，从西边吹来的风。v为正，表示南风，从南边从来的风。假如u为1，v为1，则表示西南风。

1. C#

``````double v ;//v分量
double u;//u分量
double fx= 999.9; //风向

if (u > 0 & v > 0)
{
fx = 270 - Math.Atan(v / u) * 180 / Math.PI;
}
else if (u < 0 & v > 0)
{
fx = 90 - Math.Atan(v / u) * 180 / Math.PI;
}
else if (u < 0 & v < 0)
{
fx = 90 - Math.Atan(v / u) * 180 / Math.PI;
}
else if (u > 0 & v < 0)
{
fx = 270 - Math.Atan(v / u) * 180 / Math.PI;
}
else if (u == 0 & v > 0)
{
fx = 180;
}
else if (u == 0 & v < 0)
{
fx = 0;
}
else if (u > 0 & v == 0)
{
fx = 270;
}
else if (u < 0 & v == 0)
{
fx = 90;
}
else if (u == 0 & v == 0)
{
fx = 999.9;
}

//风速是uv分量的平方和

double fs= Math.Sqrt(Math.Pow(u, 2) + Math.Pow(v, 2));
``````
1. js
``````function fun(u,v) {
if (u > 0 & v > 0) {
fx = 270 - Math.atan(v / u) * 180 / Math.PI;
}
else if (u < 0 & v > 0) {
fx = 90 - Math.atan(v / u) * 180 / Math.PI;
}
else if (u < 0 & v < 0) {
fx = 90 - Math.atan(v / u) * 180 / Math.PI;
}
else if (u > 0 & v < 0) {
fx = 270 - Math.atan(v / u) * 180 / Math.PI;
}
else if (u == 0 & v > 0) {
fx = 180;
}
else if (u == 0 & v < 0) {
fx = 0;
}
else if (u > 0 & v == 0) {
fx = 270;
}
else if (u < 0 & v == 0) {
fx = 90;
}
else if (u == 0 & v == 0) {
fx = 999.9;
}
}
``````