www.pudn.com > BackscatterMap.rar > getBackscatter.cs, change:2009-07-08,size:2962b


using System; 
using System.Drawing; 
using System.Drawing.Drawing2D; 
using System.Collections; 
using System.Collections.Generic; 
using System.Windows.Forms; 
using System.Text; 
using System.Data.SqlTypes; 
using System.IO; 
 
namespace WindowsApplication4 
{ 
    class getBackscatter 
    { 
        public double judge(double Elevation, double InciAngle) 
        { 
            getBackscatter myGB=new getBackscatter(); 
            double backscatter; 
            if (Elevation < 200) 
                backscatter = myGB.lowRelief(InciAngle); 
            else if (Elevation >= 200 && Elevation < 500) 
                backscatter = myGB.foothill(InciAngle); 
            else 
                backscatter = myGB.mountain(InciAngle); 
            return backscatter; 
        } 
        //------------------------------------------ 
        public double lowRelief(double angle) 
        { 
            double temp; 
            if (angle > 0 && angle < 0.25) 
                temp = -33; 
            else if (angle >= 0.25 && angle < 0.75) 
                temp = -32; 
            else if (angle >= 0.75 && angle < 1.50) 
                temp = -30; 
            else if (angle >= 1.50 && angle < 4.00) 
                temp = -27; 
            else temp = -25; 
 
            return temp; 
        } 
        //------------------------------------------ 
        public double foothill(double angle) 
        { 
            double temp; 
            if (angle > 0 && angle < 10 * Math.PI / 180) 
            { 
                double r = 0.1; 
                double a = 0.25; 
                double b = 0.20; 
                double c = 1.2 * Math.PI / 180; 
                temp = r * a * Math.Pow(10, b) * Math.Sin(angle + c); 
                temp = 10 * Math.Log10(temp); 
            } 
            else 
            { 
                double A = 0.0126; 
                double B = Math.PI / 2; 
                double beta0 = 0.40; 
                double sigmac = 1; 
                double u = Math.Sqrt(10) / 4.7; 
                double lamda=0.03; 
                temp = A * sigmac * Math.Sin(angle) / lamda + u / Math.Pow(Math.Tan(beta0), 2) * Math.Exp(-1 * Math.Pow(Math.Tan(B - angle), 2) / Math.Pow(Math.Tan(beta0), 2)); 
                temp = 10 * Math.Log10(temp); 
            } 
            return temp; 
        } 
        //------------------------------------------ 
        public double mountain(double angle) 
        { 
            double temp; 
            double A = 0.04; ; 
            double B = 1.24 ; 
            double beta0 = 0.50; 
            double sigmac = 1; 
            double u = Math.Sqrt(10) / 4.7; 
            double lamda = 0.03; 
            temp = A * sigmac * Math.Sin(angle) / lamda + u /Math.Pow(Math.Tan(beta0), 2) * Math.Exp(-1 * Math.Pow(Math.Tan(B - angle), 2) / Math.Pow(Math.Tan(beta0), 2)); 
            temp = 10 * Math.Log10(temp); 
            return temp; 
        } 
    } 
}