//反射系数 public double reflectCoefficient(double angle) { angle = GeometricUtilities.GetDegrees(angle); Reflection_vh rf = new Reflection_vh(); //水平方向系数 ArrayList reflectCoe = rf.GetReflection(5, 0.01, angle); //第一个是垂直系数 第二个是水平系数 double return_reflectCoe = Math.Pow(Math.Cos(angle) * (double)reflectCoe[1], 2) + Math.Pow(Math.Sin(angle) * (double)reflectCoe[0], 2); return(return_reflectCoe > 1 ? 1 : return_reflectCoe); //return 0.5; }
//绕射系数 public double diffractCoefficient(double angle) { angle = GeometricUtilities.GetDegrees(angle); Reflection_vh rv = new Reflection_vh(); //double return_Coe = 0; //double Coe22 = rv.Getangel22(angle); //double Coe248 = rv.Getangel248(angle); //double return_Coe = (Math.Abs(angle - 22) * Coe248 + Math.Abs(angle - 248) * Coe22) / (Math.Abs(angle - 22) + Math.Abs(angle - 248)); //double Uv = Math.Pow(10, return_Coe / 10); double Coe75 = rv.Getangel75(angle); double Coe135 = rv.Getangel135(angle); double return_Coe = (Math.Abs(angle - 135) * Coe75 + Math.Abs(angle - 75) * Coe135) / (Math.Abs(angle - 135) + Math.Abs(angle - 75)); double Uv = Math.Pow(return_Coe, 2); return(Uv > 1 ? 1 : Uv); }