Example #1
0
        /// <summary>
        /// 求绕射场场强,文档公式1
        /// </summary>
        public static EField GetDiffractionEField(EField RayEFieldAtDiffractionPoint, RayInfo ray, Face diffractionFace1, Face diffractionFace2, Point diffractionPoint, Point viewPoint, double frequence)
        {
            if ((RayEFieldAtDiffractionPoint == null) || (ray == null) || (diffractionFace1 == null) || (diffractionFace2 == null) ||
                (diffractionPoint == null) || (viewPoint == null))
            {
                throw new Exception("绕射场强计算输入的参数中有参数是null");
            }
            //
            AdjacentEdge sameEdge                = new AdjacentEdge(diffractionFace1, diffractionFace2);                                                                                //获取劈边
            double       waveLength              = 300.0 / frequence;                                                                                                                   //波长
            Plural       PluralOfVerticalEField  = EField.GetVerticalE(RayEFieldAtDiffractionPoint, ray.RayVector, sameEdge.LineVector);                                                //获得电场的垂直分量
            Plural       PluralOfHorizonalEField = EField.GetHorizonalE(RayEFieldAtDiffractionPoint, ray.RayVector, sameEdge.LineVector);                                               //获得电场的水平分量
            double       Ad   = GetSpreadFactor(ray.Origin, sameEdge, diffractionPoint, viewPoint, waveLength);                                                                         //获得空间衰减的扩散因子
            double       k    = 2 * Math.PI / waveLength;                                                                                                                               //波矢量
            double       s2   = diffractionPoint.GetDistance(viewPoint);                                                                                                                //绕射点到观察点的距离
            Plural       ejks = new Plural(Math.Cos(k * s2), -Math.Sin(k * s2));                                                                                                        //exp(-jks),相位
            Plural       verticalDiffractionFactor          = GetDiffractionFactor(ray, diffractionFace1, diffractionFace2, sameEdge, diffractionPoint, viewPoint, waveLength, true);;  //垂直极化波入射时的绕射系数D
            Plural       PluralOfVerticalDiffractionEField  = Plural.PluralMultiplyDouble(PluralOfVerticalEField * verticalDiffractionFactor * ejks, Ad);                               //垂直极化波入射时的绕射场
            Plural       horizonalDiffractionFactor         = GetDiffractionFactor(ray, diffractionFace1, diffractionFace2, sameEdge, diffractionPoint, viewPoint, waveLength, false);; //水平极化波入射时的绕射系数D
            Plural       PluralOfHorizonalDiffractionEField = Plural.PluralMultiplyDouble(horizonalDiffractionFactor * PluralOfHorizonalEField * ejks, Ad);                             //水平极化波入射时的绕射场
            SpectVector  vectorOfDiffractionRay             = new SpectVector(diffractionPoint, viewPoint);                                                                             //绕射波的方向
            //垂直极化波绕射后的绕射场
            SpectVector vectorOfVerticalDiffractionEField = GetVectorOfVerticalEField(vectorOfDiffractionRay, sameEdge.LineVector);                                                     //获得电场的垂直分量的方向
            EField      verticalDiffractionEField         = GetXYZComponentOfTotalEField(PluralOfVerticalDiffractionEField, vectorOfVerticalDiffractionEField);
            //水平极化波绕射后的绕射场
            SpectVector vectorOfHorizonalDiffractionEField = GetVectorOfHorizonalEField(vectorOfDiffractionRay, sameEdge.LineVector);                                                                                                       //获得电场的水平分量的方向
            EField      horizonalDiffractionEField         = GetXYZComponentOfTotalEField(PluralOfHorizonalDiffractionEField, vectorOfHorizonalDiffractionEField);
            EField      diffractionEField = new EField(verticalDiffractionEField.X + horizonalDiffractionEField.X, verticalDiffractionEField.Y + horizonalDiffractionEField.Y, verticalDiffractionEField.Z + horizonalDiffractionEField.Z); //绕射场

            return(diffractionEField);
        }
Example #2
0
        //求得电场的xyz方向的量
        public static EField EfieldCal(string uan, double power1, double frequency, Point originPoint, Point targetPoint, Point rotateAngle = null)
        {
            double power = power1;     //传入的power1单位是dBm,转换为单位为瓦的power
            //      ReadUan.GetGainPara(uan);
            Plural Etheta = DirectEThetaCal(uan, power, frequency, originPoint, targetPoint, rotateAngle);
            Plural Ephi   = DirectEPhiCal(uan, power, frequency, originPoint, targetPoint, rotateAngle);
            //        double The = ReadUan.GetThetaAngle(originPoint, targetPoint) * Math.PI / 180.0;
            //        double Ph = ReadUan.GetPhiAngle(originPoint, targetPoint) * Math.PI / 180.0;
            EField e          = new EField();
            double thetaAngle = Convert.ToInt32(ReadUan.GetThetaAngle(originPoint, targetPoint));
            double phiAngle   = Convert.ToInt32(ReadUan.GetPhiAngle(originPoint, targetPoint));
            double Xtheta     = Math.Cos(thetaAngle * Math.PI / 180.0) * Math.Cos(phiAngle / 180 * Math.PI);
            double Xphi       = Math.Sin(ReadUan.GetPhiAngle(originPoint, targetPoint) * Math.PI / 180.0);
            double Ytheta     = Math.Cos(thetaAngle * Math.PI / 180.0) * Math.Sin(phiAngle / 180 * Math.PI);
            double Yphi       = Math.Cos(phiAngle * Math.PI / 180.0);
            double Ztheta     = Math.Sin(thetaAngle * Math.PI / 180.0);
            double Zphi       = 0;

            e.X = Plural.PluralMultiplyDouble(Etheta, Xtheta) - Plural.PluralMultiplyDouble(Ephi, Xphi);
            e.Y = Plural.PluralMultiplyDouble(Etheta, Ytheta) + Plural.PluralMultiplyDouble(Ephi, Yphi);
            e.Z = Plural.PluralMultiplyDouble(Ephi, Zphi) - Plural.PluralMultiplyDouble(Etheta, Ztheta);
            //string pathtest = "D:\\renwu\\"+DateTime.Today.ToString("yy/MM/dd")+".txt";
            //File.WriteAllText(pathtest, e.X.Re + "  " + e.X.Im + "|  " + e.Y.Re + "  " + e.Y.Im + "|  " + e.Z.Re + "  " + e.Z.Im);
            //需添加计算方法
            return(e);
        }
Example #3
0
        public void EfieldCalTest9()
        {
            string uan = uanstr; // TODO: 初始化为适当的值

            ReadUan.GetGainPara(uan);
            double power1      = 1;                                 // TODO: 初始化为适当的值
            double frequency   = 1000;                              // TODO: 初始化为适当的值
            Point  originPoint = new Point(0, 0, 0);                // TODO: 初始化为适当的值
            Point  targetPoint = new Point(1, Math.Sqrt(3) / 3, 0); // TODO: 初始化为适当的值
            Point  rotateAngle = null;                              // TODO: 初始化为适当的值
            EField expected    = new EField();                      // TODO: 初始化为适当的值

            expected.X.Re = -1.95443401965821;
            expected.X.Im = -2.72583705727299;
            expected.Y.Re = 3.38517902208908;
            expected.Y.Im = 4.72128827635085;
            expected.Z.Re = -6.72668373552254;
            expected.Z.Im = -9.38166426413794;
            EField actual;

            actual = DirectEfieldCal.EfieldCal(uan, power1, frequency, originPoint, targetPoint, rotateAngle);
            Assert.IsTrue((Math.Abs(expected.X.Re - actual.X.Re) < 0.00001) && (Math.Abs(expected.X.Im - actual.X.Im) < 0.00001) &&
                          (Math.Abs(expected.Y.Re - actual.Y.Re) < 0.00001) && (Math.Abs(expected.Y.Im - actual.Y.Im) < 0.00001) &&
                          (Math.Abs(expected.Z.Re - actual.Z.Re) < 0.00001) && (Math.Abs(expected.Z.Im - actual.Z.Im) < 0.00001));
            //Assert.Inconclusive("验证此测试方法的正确性。");
        }
Example #4
0
        public void EfieldCalTest8()
        {
            string uan = uanstr; // TODO: 初始化为适当的值

            ReadUan.GetGainPara(uan);
            double power1      = 1;                   // TODO: 初始化为适当的值
            double frequency   = 1000;                // TODO: 初始化为适当的值
            Point  originPoint = new Point(0, 0, 0);  // TODO: 初始化为适当的值
            Point  targetPoint = new Point(1, -1, 0); // TODO: 初始化为适当的值
            Point  rotateAngle = null;                // TODO: 初始化为适当的值
            EField expected    = new EField();        // TODO: 初始化为适当的值

            expected.X.Re = -0.867524790988055;
            expected.X.Im = 3.77457292114235;
            expected.Y.Re = -0.867524790988055;
            expected.Y.Im = 3.77457292114236;
            expected.Z.Re = 2.11128514574735;
            expected.Z.Im = -9.18613487791125;
            EField actual;

            actual = DirectEfieldCal.EfieldCal(uan, power1, frequency, originPoint, targetPoint, rotateAngle);
            Assert.IsTrue((Math.Abs(expected.X.Re - actual.X.Re) < 0.00001) && (Math.Abs(expected.X.Im - actual.X.Im) < 0.00001) &&
                          (Math.Abs(expected.Y.Re - actual.Y.Re) < 0.00001) && (Math.Abs(expected.Y.Im - actual.Y.Im) < 0.00001) &&
                          (Math.Abs(expected.Z.Re - actual.Z.Re) < 0.00001) && (Math.Abs(expected.Z.Im - actual.Z.Im) < 0.00001));
            //Assert.Inconclusive("验证此测试方法的正确性。");
        }
Example #5
0
        public void EfieldCalTest11()
        {
            string uan = uanstr; // TODO: 初始化为适当的值

            ReadUan.GetGainPara(uan);
            double power1      = 1;                  // TODO: 初始化为适当的值
            double frequency   = 1000;               // TODO: 初始化为适当的值
            Point  originPoint = new Point(0, 0, 0); // TODO: 初始化为适当的值
            Point  targetPoint = new Point(1, 0, 1); // TODO: 初始化为适当的值
            Point  rotateAngle = null;               // TODO: 初始化为适当的值
            EField expected    = new EField();       // TODO: 初始化为适当的值

            expected.X.Re = -1.05564268913923;
            expected.X.Im = 4.59306794482337;
            expected.Y.Re = -1.22686532511019;
            expected.Y.Im = 5.33805221724575;
            expected.Z.Re = 1.05564268913923;
            expected.Z.Im = -4.59306794482337;
            EField actual;

            actual = DirectEfieldCal.EfieldCal(uan, power1, frequency, originPoint, targetPoint, rotateAngle);
            Assert.IsTrue((Math.Abs(expected.X.Re - actual.X.Re) < 0.00001) && (Math.Abs(expected.X.Im - actual.X.Im) < 0.00001) &&
                          (Math.Abs(expected.Y.Re - actual.Y.Re) < 0.00001) && (Math.Abs(expected.Y.Im - actual.Y.Im) < 0.00001) &&
                          (Math.Abs(expected.Z.Re - actual.Z.Re) < 0.00001) && (Math.Abs(expected.Z.Im - actual.Z.Im) < 0.00001));
            //Assert.Inconclusive("验证此测试方法的正确性。");
        }
Example #6
0
        public void EfieldCalTest10()
        {
            string uan = uanstr; // TODO: 初始化为适当的值

            ReadUan.GetGainPara(uan);
            double power1      = 1;                             // TODO: 初始化为适当的值
            double frequency   = 1000;                          // TODO: 初始化为适当的值
            Point  originPoint = new Point(0, 0, 0);            // TODO: 初始化为适当的值
            Point  targetPoint = new Point(1, Math.Sqrt(3), 0); // TODO: 初始化为适当的值
            Point  rotateAngle = null;                          // TODO: 初始化为适当的值
            EField expected    = new EField();                  // TODO: 初始化为适当的值

            expected.X.Re = 1.67705098312488;
            expected.X.Im = -2.90473750965554;
            expected.Y.Re = -0.968245836551877;
            expected.Y.Im = 1.67705098312483;
            expected.Z.Re = 3.33246528417467;
            expected.Z.Im = -5.77199918664981;
            EField actual;

            actual = DirectEfieldCal.EfieldCal(uan, power1, frequency, originPoint, targetPoint, rotateAngle);
            Assert.IsTrue((Math.Abs(expected.X.Re - actual.X.Re) < 0.00001) && (Math.Abs(expected.X.Im - actual.X.Im) < 0.00001) &&
                          (Math.Abs(expected.Y.Re - actual.Y.Re) < 0.00001) && (Math.Abs(expected.Y.Im - actual.Y.Im) < 0.00001) &&
                          (Math.Abs(expected.Z.Re - actual.Z.Re) < 0.00001) && (Math.Abs(expected.Z.Im - actual.Z.Im) < 0.00001));
            //Assert.Inconclusive("验证此测试方法的正确性。");
        }
Example #7
0
        public void EfieldCalTest12()
        {
            string uan = uanstr; // TODO: 初始化为适当的值

            ReadUan.GetGainPara(uan);
            double power1      = 1;                                 // TODO: 初始化为适当的值
            double frequency   = 1000;                              // TODO: 初始化为适当的值
            Point  originPoint = new Point(0, 0, 0);                // TODO: 初始化为适当的值
            Point  targetPoint = new Point(1, 0, Math.Sqrt(3) / 3); // TODO: 初始化为适当的值
            Point  rotateAngle = null;                              // TODO: 初始化为适当的值
            EField expected    = new EField();                      // TODO: 初始化为适当的值

            expected.X.Re = 2.9127396218559;
            expected.X.Im = 4.06237996247662;
            expected.Y.Re = 3.90886803931641;
            expected.Y.Im = 5.45167411454598;
            expected.Z.Re = -5.04501301427337;
            expected.Z.Im = -7.03624849465925;
            EField actual;

            actual = DirectEfieldCal.EfieldCal(uan, power1, frequency, originPoint, targetPoint, rotateAngle);
            Assert.IsTrue((Math.Abs(expected.X.Re - actual.X.Re) < 0.00001) && (Math.Abs(expected.X.Im - actual.X.Im) < 0.00001) &&
                          (Math.Abs(expected.Y.Re - actual.Y.Re) < 0.00001) && (Math.Abs(expected.Y.Im - actual.Y.Im) < 0.00001) &&
                          (Math.Abs(expected.Z.Re - actual.Z.Re) < 0.00001) && (Math.Abs(expected.Z.Im - actual.Z.Im) < 0.00001));
            //Assert.Inconclusive("验证此测试方法的正确性。");
        }
Example #8
0
        public void EfieldCalTest13()
        {
            string uan = uanstr; // TODO: 初始化为适当的值

            ReadUan.GetGainPara(uan);
            double power1      = 1;                             // TODO: 初始化为适当的值
            double frequency   = 1000;                          // TODO: 初始化为适当的值
            Point  originPoint = new Point(0, 0, 0);            // TODO: 初始化为适当的值
            Point  targetPoint = new Point(1, 0, Math.Sqrt(3)); // TODO: 初始化为适当的值
            Point  rotateAngle = null;                          // TODO: 初始化为适当的值
            EField expected    = new EField();                  // TODO: 初始化为适当的值

            expected.X.Re = -1.44299978225551;
            expected.X.Im = 2.4993489381773;
            expected.Y.Re = -1.93649167310375;
            expected.Y.Im = 3.35410196624966;
            expected.Z.Re = 0.833116312725791;
            expected.Z.Im = -1.44299978225547;
            EField actual;

            actual = DirectEfieldCal.EfieldCal(uan, power1, frequency, originPoint, targetPoint, rotateAngle);
            Assert.IsTrue((Math.Abs(expected.X.Re - actual.X.Re) < 0.00001) && (Math.Abs(expected.X.Im - actual.X.Im) < 0.00001) &&
                          (Math.Abs(expected.Y.Re - actual.Y.Re) < 0.00001) && (Math.Abs(expected.Y.Im - actual.Y.Im) < 0.00001) &&
                          (Math.Abs(expected.Z.Re - actual.Z.Re) < 0.00001) && (Math.Abs(expected.Z.Im - actual.Z.Im) < 0.00001));
            //Assert.Inconclusive("验证此测试方法的正确性。");
        }
Example #9
0
        public void EfieldCalTest15()
        {
            string uan = uanstr; // TODO: 初始化为适当的值

            ReadUan.GetGainPara(uan);
            double power1      = 1;                             // TODO: 初始化为适当的值
            double frequency   = 1000;                          // TODO: 初始化为适当的值
            Point  originPoint = new Point(0, 0, 0);            // TODO: 初始化为适当的值
            Point  targetPoint = new Point(1, 1, Math.Sqrt(2)); // TODO: 初始化为适当的值
            Point  rotateAngle = null;                          // TODO: 初始化为适当的值
            EField expected    = new EField();                  // TODO: 初始化为适当的值

            expected.X.Re = 0.191101863744437;
            expected.X.Im = -0.330998137426465;
            expected.Y.Re = -2.54751092378142;
            expected.Y.Im = 4.41241835282609;
            expected.Z.Re = 1.66623282560157;
            expected.Z.Im = -2.88599991118093;
            EField actual;

            actual = DirectEfieldCal.EfieldCal(uan, power1, frequency, originPoint, targetPoint, rotateAngle);
            Assert.IsTrue((Math.Abs(expected.X.Re - actual.X.Re) < 0.00001) && (Math.Abs(expected.X.Im - actual.X.Im) < 0.00001) &&
                          (Math.Abs(expected.Y.Re - actual.Y.Re) < 0.00001) && (Math.Abs(expected.Y.Im - actual.Y.Im) < 0.00001) &&
                          (Math.Abs(expected.Z.Re - actual.Z.Re) < 0.00001) && (Math.Abs(expected.Z.Im - actual.Z.Im) < 0.00001));
            //Assert.Inconclusive("验证此测试方法的正确性。");
        }
Example #10
0
 //求反射电场总值
 static public EField ReflectEfield(EField e, RayInfo rayIn, RayInfo rayOut, SpectVector l, double Conduct, double Epara, double s1, double s2, double f)
 {
     if (rayIn.RayVector.IsParallel(l))
     {
         Plural horiValue = HorizonalReflectance(0, Conduct, f, Epara);
         Plural A         = new Plural(s1 / (s1 + s2));
         Plural Xtemp     = e.X * horiValue * A * GetPhase(s1, s2, f);
         Plural Ytemp     = e.Y * horiValue * A * GetPhase(s1, s2, f);
         Plural Ztemp     = e.Z * horiValue * A * GetPhase(s1, s2, f);
         return(new EField(Xtemp, Ytemp, Ztemp));
     }
     else
     {
         double ReflectAngle = SpectVector.VectorPhase(rayIn.RayVector, l);
         if (Math.Abs(ReflectAngle) >= 90)
         {
             ReflectAngle = 180 - Math.Abs(ReflectAngle);
         }
         EField E          = new EField();
         EField VerticalE  = VerticalEfield(e, rayIn, l, ReflectAngle, Conduct, Epara, s1, s2, f);
         EField HorizonalE = HorizonalEfield(e, rayIn, rayOut, l, ReflectAngle, Conduct, Epara, s1, s2, f);
         E.X.Re = VerticalE.X.Re + HorizonalE.X.Re;
         E.X.Im = VerticalE.X.Im + HorizonalE.X.Im;
         E.Y.Re = VerticalE.Y.Re + HorizonalE.Y.Re;
         E.Y.Im = VerticalE.Y.Im + HorizonalE.Y.Im;
         E.Z.Re = VerticalE.Z.Re + HorizonalE.Z.Re;
         E.Z.Im = VerticalE.Z.Im + HorizonalE.Z.Im;
         //string pathtest = "D:\\renwu\\反射" + DateTime.Today.ToString("yy/MM/dd") + ".txt";
         //File.WriteAllText(pathtest, E.X.Re + "  " + E.X.Im + " | " + E.Y.Re + "  " + E.Y.Im + " | " + E.Z.Re + "  " + E.Z.Im);
         return(E);
     }
 }
Example #11
0
        public void EfieldCalTest1()
        {
            string uan = uanstr; // TODO: 初始化为适当的值

            ReadUan.GetGainPara(uan);
            double power1      = 1;                  // TODO: 初始化为适当的值
            double frequency   = 1000;               // TODO: 初始化为适当的值
            Point  originPoint = new Point(0, 0, 0); // TODO: 初始化为适当的值
            Point  targetPoint = new Point(1, 0, 0); // TODO: 初始化为适当的值
            Point  rotateAngle = null;               // TODO: 初始化为适当的值
            EField expected    = new EField();       // TODO: 初始化为适当的值

            expected.X.Re = 0;
            expected.X.Im = 0;
            expected.Y.Re = -3.8729833462074;
            expected.Y.Im = -6.70820393249938;
            expected.Z.Re = 6.66493056834915;
            expected.Z.Im = 11.5439983732997;
            EField actual;

            actual = DirectEfieldCal.EfieldCal(uan, power1, frequency, originPoint, targetPoint, rotateAngle);
            Assert.IsTrue((Math.Abs(expected.X.Re - actual.X.Re) < 0.00001) && (Math.Abs(expected.X.Im - actual.X.Im) < 0.00001) &&
                          (Math.Abs(expected.Y.Re - actual.Y.Re) < 0.00001) && (Math.Abs(expected.Y.Im - actual.Y.Im) < 0.00001) &&
                          (Math.Abs(expected.Z.Re - actual.Z.Re) < 0.00001) && (Math.Abs(expected.Z.Im - actual.Z.Im) < 0.00001));
            //Assert.Inconclusive("验证此测试方法的正确性。");
        }
Example #12
0
        //求反射电场强度的垂直分量
        private static EField VerticalEfield(EField e, RayInfo rayIn, SpectVector l, double ReflectAngle, double Conduct, double Epara, double s1, double s2, double f)
        {
            Plural VEi     = EField.GetVerticalE(e, rayIn.RayVector, l);
            Plural V       = VerticalReflectance(ReflectAngle, Conduct, f, Epara);
            Plural A       = new Plural(s1 / (s1 + s2));
            Plural E       = VEi * V * A * GetPhase(s1, s2, f);
            EField Vefield = SpectVector.VectorDotMultiply(E, SpectVector.VectorCrossMultiply(rayIn.RayVector, l));

            return(Vefield);
        }
Example #13
0
        //求反射电场强度的水平分量
        private static EField HorizonalEfield(EField e, RayInfo rayIn, RayInfo rayOut, SpectVector l, double ReflectAngle, double Conduct, double Epara, double s1, double s2, double f)
        {
            Plural      HEi     = EField.GetHorizonalE(e, rayIn.RayVector, l);
            Plural      H       = HorizonalReflectance(ReflectAngle, Conduct, f, Epara);
            Plural      A       = new Plural(s1 / (s1 + s2));
            Plural      E       = HEi * H * A * GetPhase(s1, s2, f);
            SpectVector l1      = SpectVector.VectorCrossMultiply(rayOut.RayVector, SpectVector.VectorCrossMultiply(rayIn.RayVector, l));
            EField      Hefield = SpectVector.VectorDotMultiply(E, l1);

            return(Hefield);
        }
Example #14
0
        /// <summary>
        /// 将一个有方向的场强用XYZ坐标表示
        /// </summary>
        private static EField GetXYZComponentOfTotalEField(Plural totalEField, SpectVector vectorOfEField)
        {
            EField componentEField = new EField();
            double XComponent      = vectorOfEField.a / (Math.Sqrt(Math.Pow(vectorOfEField.a, 2) + Math.Pow(vectorOfEField.b, 2) + Math.Pow(vectorOfEField.c, 2)));
            double YComponent      = vectorOfEField.b / (Math.Sqrt(Math.Pow(vectorOfEField.a, 2) + Math.Pow(vectorOfEField.b, 2) + Math.Pow(vectorOfEField.c, 2)));
            double ZComponent      = vectorOfEField.c / (Math.Sqrt(Math.Pow(vectorOfEField.a, 2) + Math.Pow(vectorOfEField.b, 2) + Math.Pow(vectorOfEField.c, 2)));

            componentEField.X = Plural.PluralMultiplyDouble(totalEField, XComponent);
            componentEField.Y = Plural.PluralMultiplyDouble(totalEField, YComponent);
            componentEField.Z = Plural.PluralMultiplyDouble(totalEField, ZComponent);
            return(componentEField);
        }
        void Add(EField field)
        {
            if (_fields.Where(f => f.ViewField == field).Any())
            {
                return; // found
            }
            _fields.Add(new ReportTicketsViewField(field));

            EJoin table = _mapFieldToJoin[field];

            if (!_joins.ContainsKey(table))
            {
                _joins[table] = new ReportTicketsViewJoin(table);
            }
        }
Example #16
0
        public ReflectEfieldCal(RayInfo rayIn, Face intersectionFace, double inputFrequency, EField efield, double outDistance)
        {
            this.rayIn            = rayIn;
            this.intersectionFace = intersectionFace;
            this.inputFrequency   = inputFrequency;
            this.inDistance       = rayIn.Origin.GetDistance(rayIn.GetCrossPointBetweenStraightLineAndFace(intersectionFace));
            this.outDistance      = outDistance;
            this.Epara            = intersectionFace.Material.DielectricLayer[1].Permittivity / intersectionFace.Material.DielectricLayer[0].Permittivity;
            this.e = efield;
            //衰减常数公式,见《电磁场与电磁波》(焦其祥主编) 192页,透射波所在介质的衰减常数
            this.outerAlphaConstant = 2 * Math.PI * inputFrequency * Math.Sqrt(permeability * intersectionFace.Material.DielectricLayer[0].Permittivity / 2 * (Math.Sqrt(1 + Math.Pow(intersectionFace.Material.DielectricLayer[0].Conductivity, 2) / (Math.Pow(2 * Math.PI * inputFrequency, 2) * Math.Pow(intersectionFace.Material.DielectricLayer[0].Permittivity, 2)
                                                                                                                                                                                                                                                       )) - 1)); //入射波所在介质的衰减常数

            this.reflectAngle   = rayIn.RayVector.GetPhaseOfVector(intersectionFace.NormalVector);                                                                                                                                                               //角度值
            this.verticalVector = intersectionFace.NormalVector;
        }
Example #17
0
        public void FromValue(DemoValue orig, DemoValue refer)
        {
            if (orig.Field1 != refer.Field1)
            {
                ChangeFlags |= DemoChangeSet.EField.Field1;
                Field1       = orig.Field1;
                refer.Field1 = orig.Field1;
            }

            if (orig.Field2 != refer.Field2)
            {
                ChangeFlags |= DemoChangeSet.EField.Field2;
                Field2       = orig.Field2;
                refer.Field2 = orig.Field2;
            }
        }
Example #18
0
 public JqlKeyword addCondition(EField field, EOperator eoperator, String operand)
 {
     JqlKeyword jqlKeyword = new JqlKeyword();
     jqlKeyword.jqlbuilder = this;
     if (field != null)
     {
         jql.Append(field.ToString() + " ");
     }
     if (eoperator != null)
     {
         jql.Append(eoperator.ToString() + " ");
     }
     if (operand != null)
     {
         jql.Append(operand + " ");
     }
     return jqlKeyword;
 }
    void CreateField(string name, int score)
    {
        //Creating a new gameobject to the scene with emptyfield
        GameObject newfieldGO = Instantiate(emptyfield);

        //Parenting our gameobject to the verticle layout
        newfieldGO.transform.parent     = VerticalLayout;
        newfieldGO.transform.localScale = Vector3.one;
        //Creating a new empty field class and passing in our newfieldGO gameobject we made earlier
        EField newfield = newfieldGO.GetComponent <EmptyScoreField>().field;

        newfield.name.text  = name;
        newfield.score.text = score.ToString();
        //Creating a new Boardfield with the name,score, and empty field we created earlier
        BoardField field = new BoardField(name, score, newfield);

        //Adding the field and the newfieldGO gameobject to lists
        Allfields.Add(newfieldGO);
        AddedBoard.Add(field);
    }
Example #20
0
        public void ReflectEfieldTest5()
        {
            EField      e        = new EField(new Plural(0, 0), new Plural(1, 0), new Plural(1, 0));               // TODO: 初始化为适当的值
            RayInfo     rayIn    = new RayInfo(new Point(0, 0, 0), new Point(1, 0, 0));                            // TODO: 初始化为适当的值
            Face        face     = new SpaceFace(new Point(6, -2, 3), new Point(6, -2, -3), new Point(10, 2, 0));
            RayInfo     rayOut   = new RayInfo(new Point(0, 0, 0), new Point(0, 1, 0));                            // TODO: 初始化为适当的值
            SpectVector l        = face.GetNormalVector();                                                         // TODO: 初始化为适当的值
            double      Conduct  = 0;                                                                              // TODO: 初始化为适当的值
            double      Epara    = 6.2;                                                                            // TODO: 初始化为适当的值
            double      s1       = 1;                                                                              // TODO: 初始化为适当的值
            double      s2       = 1;                                                                              // TODO: 初始化为适当的值
            double      f        = 1000;                                                                           // TODO: 初始化为适当的值
            EField      expected = new EField(new Plural(0.0737128450442626, 0.127674392787113),
                                              new Plural(0, 0), new Plural(0.135750547921789, 0.235126846155848)); // TODO: 初始化为适当的值
            EField actual = new EField();

            actual = ReflectEfieldCal.ReflectEfield(e, rayIn, rayOut, l, Conduct, Epara, s1, s2, f);
            Assert.IsTrue(Math.Abs(actual.X.Re - expected.X.Re) < 0.0000001 && Math.Abs(actual.X.Im - expected.X.Im) < 0.0000001 &&
                          Math.Abs(actual.Y.Re - expected.Y.Re) < 0.0000001 && Math.Abs(actual.Y.Im - expected.Y.Im) < 0.0000001 &&
                          Math.Abs(actual.Z.Re - expected.Z.Re) < 0.0000001 && Math.Abs(actual.Z.Im - expected.Z.Im) < 0.0000001);
            //Assert.Inconclusive("验证此测试方法的正确性。");
        }
Example #21
0
        public void ReflectEfieldTest7()
        {
            EField      e        = new EField(new Plural(0, 0), new Plural(1, 0), new Plural(1, 0));                                                // TODO: 初始化为适当的值
            RayInfo     rayIn    = new RayInfo(new Point(0, 0, 0), new Point(1, 0, 0));                                                             // TODO: 初始化为适当的值
            Face        face     = new SpaceFace(new Point(6, -2, 3), new Point(6, -2, -3), new Point(6 + 4 / Math.Sqrt(3), 2, 0));
            RayInfo     rayOut   = new RayInfo(new Point(0, 0, 0), new Point(-1, Math.Sqrt(3), 0));                                                 // TODO: 初始化为适当的值
            SpectVector l        = face.GetNormalVector();                                                                                          // TODO: 初始化为适当的值
            double      Conduct  = 0;                                                                                                               // TODO: 初始化为适当的值
            double      Epara    = 80.4;                                                                                                            // TODO: 初始化为适当的值
            double      s1       = 1;                                                                                                               // TODO: 初始化为适当的值
            double      s2       = 1;                                                                                                               // TODO: 初始化为适当的值
            double      f        = 1000;                                                                                                            // TODO: 初始化为适当的值
            EField      expected = new EField(new Plural(0.167173715239667, 0.289553368485151),
                                              new Plural(0.0965177894950518, 0.167173715239665), new Plural(0.205899086049201, 0.356627678269207)); // TODO: 初始化为适当的值
            EField actual = new EField();

            actual = ReflectEfieldCal.ReflectEfield(e, rayIn, rayOut, l, Conduct, Epara, s1, s2, f);
            Assert.IsTrue(Math.Abs(actual.X.Re - expected.X.Re) < 0.0000001 && Math.Abs(actual.X.Im - expected.X.Im) < 0.0000001 &&
                          Math.Abs(actual.Y.Re - expected.Y.Re) < 0.0000001 && Math.Abs(actual.Y.Im - expected.Y.Im) < 0.0000001 &&
                          Math.Abs(actual.Z.Re - expected.Z.Re) < 0.0000001 && Math.Abs(actual.Z.Im - expected.Z.Im) < 0.0000001);
            //Assert.Inconclusive("验证此测试方法的正确性。");
        }
Example #22
0
        public void ReflectEfieldTest8()
        {
            EField      e        = new EField(new Plural(0, 0), new Plural(1, 0), new Plural(1, 0));              // TODO: 初始化为适当的值
            RayInfo     rayIn    = new RayInfo(new Point(0, 0, 0), new Point(1, 0, 0));                           // TODO: 初始化为适当的值
            Face        face     = new SpaceFace(new Point(6, -2, 3), new Point(6, -2, -3), new Point(10, 2, 0));
            RayInfo     rayOut   = new RayInfo(new Point(0, 0, 0), new Point(0, 1, 0));                           // TODO: 初始化为适当的值
            SpectVector l        = face.GetNormalVector();                                                        // TODO: 初始化为适当的值
            double      Conduct  = 0;                                                                             // TODO: 初始化为适当的值
            double      Epara    = 80.4;                                                                          // TODO: 初始化为适当的值
            double      s1       = 1;                                                                             // TODO: 初始化为适当的值
            double      s2       = 1;                                                                             // TODO: 初始化为适当的值
            double      f        = 1000;                                                                          // TODO: 初始化为适当的值
            EField      expected = new EField(new Plural(0.182066642851485, 0.315348675782264),
                                              new Plural(0, 0), new Plural(0.213346339815971, 0.36952670017011)); // TODO: 初始化为适当的值
            EField actual = new EField();

            actual = ReflectEfieldCal.ReflectEfield(e, rayIn, rayOut, l, Conduct, Epara, s1, s2, f);
            Assert.IsTrue(Math.Abs(actual.X.Re - expected.X.Re) < 0.0000001 && Math.Abs(actual.X.Im - expected.X.Im) < 0.0000001 &&
                          Math.Abs(actual.Y.Re - expected.Y.Re) < 0.0000001 && Math.Abs(actual.Y.Im - expected.Y.Im) < 0.0000001 &&
                          Math.Abs(actual.Z.Re - expected.Z.Re) < 0.0000001 && Math.Abs(actual.Z.Im - expected.Z.Im) < 0.0000001);
            //Assert.Inconclusive("验证此测试方法的正确性。");
        }
Example #23
0
        public void ReflectEfieldTest9()
        {
            EField      e        = new EField(new Plural(0, 0), new Plural(1, 0), new Plural(1, 0));                                                  // TODO: 初始化为适当的值
            RayInfo     rayIn    = new RayInfo(new Point(0, 0, 0), new Point(1, 0, 0));                                                               // TODO: 初始化为适当的值
            Face        face     = new SpaceFace(new Point(6, -2, 3), new Point(6, -2, -3), new Point(6 + 4 * Math.Sqrt(3), 2, 0));
            RayInfo     rayOut   = new RayInfo(new Point(0, 0, 0), new Point(1, Math.Sqrt(3), 0));                                                    // TODO: 初始化为适当的值
            SpectVector l        = face.GetNormalVector();                                                                                            // TODO: 初始化为适当的值
            double      Conduct  = 0;                                                                                                                 // TODO: 初始化为适当的值
            double      Epara    = 80.4;                                                                                                              // TODO: 初始化为适当的值
            double      s1       = 1;                                                                                                                 // TODO: 初始化为适当的值
            double      s2       = 1;                                                                                                                 // TODO: 初始化为适当的值
            double      f        = 1000;                                                                                                              // TODO: 初始化为适当的值
            EField      expected = new EField(new Plural(0.137839140789951, 0.238744395119831),
                                              new Plural(-0.0795814650399449, -0.137839140789949), new Plural(0.223473914142364, 0.387068173460853)); // TODO: 初始化为适当的值
            EField actual = new EField();

            actual = ReflectEfieldCal.ReflectEfield(e, rayIn, rayOut, l, Conduct, Epara, s1, s2, f);
            Assert.IsTrue(Math.Abs(actual.X.Re - expected.X.Re) < 0.0000001 && Math.Abs(actual.X.Im - expected.X.Im) < 0.0000001 &&
                          Math.Abs(actual.Y.Re - expected.Y.Re) < 0.0000001 && Math.Abs(actual.Y.Im - expected.Y.Im) < 0.0000001 &&
                          Math.Abs(actual.Z.Re - expected.Z.Re) < 0.0000001 && Math.Abs(actual.Z.Im - expected.Z.Im) < 0.0000001);
            //Assert.Inconclusive("验证此测试方法的正确性。");
        }
Example #24
0
        public void ReflectEfieldTest11()
        {
            EField      e        = new EField(new Plural(0, 0), new Plural(1, 0), new Plural(1, 0));                                               // TODO: 初始化为适当的值
            RayInfo     rayIn    = new RayInfo(new Point(0, 0, 0), new Point(1, 0, 0));                                                            // TODO: 初始化为适当的值
            Face        face     = new SpaceFace(new Point(6, -2, 3), new Point(6, -2, -3), new Point(6 + 4 / Math.Sqrt(3), 2, 0));
            RayInfo     rayOut   = new RayInfo(new Point(0, 0, 0), new Point(-1, Math.Sqrt(3), 0));                                                // TODO: 初始化为适当的值
            SpectVector l        = face.GetNormalVector();                                                                                         // TODO: 初始化为适当的值
            double      Conduct  = 10000000;                                                                                                       // TODO: 初始化为适当的值
            double      Epara    = 0;                                                                                                              // TODO: 初始化为适当的值
            double      s1       = 1;                                                                                                              // TODO: 初始化为适当的值
            double      s2       = 1;                                                                                                              // TODO: 初始化为适当的值
            double      f        = 1000;                                                                                                           // TODO: 初始化为适当的值
            EField      expected = new EField(new Plural(0.216525636623664, 0.374928007347336),
                                              new Plural(0.125011134591127, 0.216464785968714), new Plural(0.250016703089389, 0.432950353731651)); // TODO: 初始化为适当的值
            EField actual = new EField();

            actual = ReflectEfieldCal.ReflectEfield(e, rayIn, rayOut, l, Conduct, Epara, s1, s2, f);
            Assert.IsTrue(Math.Abs(actual.X.Re - expected.X.Re) < 0.0000001 && Math.Abs(actual.X.Im - expected.X.Im) < 0.0000001 &&
                          Math.Abs(actual.Y.Re - expected.Y.Re) < 0.0000001 && Math.Abs(actual.Y.Im - expected.Y.Im) < 0.0000001 &&
                          Math.Abs(actual.Z.Re - expected.Z.Re) < 0.0000001 && Math.Abs(actual.Z.Im - expected.Z.Im) < 0.0000001);
            //Assert.Inconclusive("验证此测试方法的正确性。");
        }
Example #25
0
        public void ReflectEfieldTest12()
        {
            EField      e        = new EField(new Plural(0, 0), new Plural(1, 0), new Plural(1, 0));              // TODO: 初始化为适当的值
            RayInfo     rayIn    = new RayInfo(new Point(0, 0, 0), new Point(1, 0, 0));                           // TODO: 初始化为适当的值
            Face        face     = new SpaceFace(new Point(6, -2, 3), new Point(6, -2, -3), new Point(10, 2, 0));
            RayInfo     rayOut   = new RayInfo(new Point(0, 0, 0), new Point(0, 1, 0));                           // TODO: 初始化为适当的值
            SpectVector l        = face.GetNormalVector();                                                        // TODO: 初始化为适当的值
            double      Conduct  = 10000000;                                                                      // TODO: 初始化为适当的值
            double      Epara    = 0;                                                                             // TODO: 初始化为适当的值
            double      s1       = 1;                                                                             // TODO: 初始化为适当的值
            double      s2       = 1;                                                                             // TODO: 初始化为适当的值
            double      f        = 1000;                                                                          // TODO: 初始化为适当的值
            EField      expected = new EField(new Plural(0.2500272723013, 0.432910889925977),
                                              new Plural(0, 0), new Plural(0.25001363855995, 0.432961794520133)); // TODO: 初始化为适当的值
            EField actual = new EField();

            actual = ReflectEfieldCal.ReflectEfield(e, rayIn, rayOut, l, Conduct, Epara, s1, s2, f);
            Assert.IsTrue(Math.Abs(actual.X.Re - expected.X.Re) < 0.0000001 && Math.Abs(actual.X.Im - expected.X.Im) < 0.0000001 &&
                          Math.Abs(actual.Y.Re - expected.Y.Re) < 0.0000001 && Math.Abs(actual.Y.Im - expected.Y.Im) < 0.0000001 &&
                          Math.Abs(actual.Z.Re - expected.Z.Re) < 0.0000001 && Math.Abs(actual.Z.Im - expected.Z.Im) < 0.0000001);
            //Assert.Inconclusive("验证此测试方法的正确性。");
        }
Example #26
0
        public void ReflectEfieldTest13()
        {
            EField      e        = new EField(new Plural(0, 0), new Plural(1, 0), new Plural(1, 0));                                                 // TODO: 初始化为适当的值
            RayInfo     rayIn    = new RayInfo(new Point(0, 0, 0), new Point(1, 0, 0));                                                              // TODO: 初始化为适当的值
            Face        face     = new SpaceFace(new Point(6, -2, 3), new Point(6, -2, -3), new Point(6 + 4 / Math.Sqrt(3), 2, 0));
            RayInfo     rayOut   = new RayInfo(new Point(0, 0, 0), new Point(-1, Math.Sqrt(3), 0));                                                  // TODO: 初始化为适当的值
            SpectVector l        = face.GetNormalVector();                                                                                           // TODO: 初始化为适当的值
            double      Conduct  = 0;                                                                                                                // TODO: 初始化为适当的值
            double      Epara    = 1 / 80.4;                                                                                                         // TODO: 初始化为适当的值
            double      s1       = 1;                                                                                                                // TODO: 初始化为适当的值
            double      s2       = 1;                                                                                                                // TODO: 初始化为适当的值
            double      f        = 1000;                                                                                                             // TODO: 初始化为适当的值
            EField      expected = new EField(new Plural(-0.232861639196329, -0.365069112622252),
                                              new Plural(-0.134442730073938, -0.210772750445275), new Plural(0.240433653861357, -0.43839669032828)); // TODO: 初始化为适当的值
            EField actual = new EField();

            actual = ReflectEfieldCal.ReflectEfield(e, rayIn, rayOut, l, Conduct, Epara, s1, s2, f);
            Assert.IsTrue(Math.Abs(actual.X.Re - expected.X.Re) < 0.0000001 && Math.Abs(actual.X.Im - expected.X.Im) < 0.0000001 &&
                          Math.Abs(actual.Y.Re - expected.Y.Re) < 0.0000001 && Math.Abs(actual.Y.Im - expected.Y.Im) < 0.0000001 &&
                          Math.Abs(actual.Z.Re - expected.Z.Re) < 0.0000001 && Math.Abs(actual.Z.Im - expected.Z.Im) < 0.0000001);
            //Assert.Inconclusive("验证此测试方法的正确性。");
        }
Example #27
0
        public void ReflectEfieldTest14()
        {
            EField      e        = new EField(new Plural(0, 0), new Plural(1, 0), new Plural(1, 0));               // TODO: 初始化为适当的值
            RayInfo     rayIn    = new RayInfo(new Point(0, 0, 0), new Point(1, 0, 0));                            // TODO: 初始化为适当的值
            Face        face     = new SpaceFace(new Point(6, -2, 3), new Point(6, -2, -3), new Point(10, 2, 0));
            RayInfo     rayOut   = new RayInfo(new Point(0, 0, 0), new Point(0, 1, 0));                            // TODO: 初始化为适当的值
            SpectVector l        = face.GetNormalVector();                                                         // TODO: 初始化为适当的值
            double      Conduct  = 0;                                                                              // TODO: 初始化为适当的值
            double      Epara    = 1 / 80.4;                                                                       // TODO: 初始化为适当的值
            double      s1       = 1;                                                                              // TODO: 初始化为适当的值
            double      s2       = 1;                                                                              // TODO: 初始化为适当的值
            double      f        = 1000;                                                                           // TODO: 初始化为适当的值
            EField      expected = new EField(new Plural(-0.26082694568263, -0.426578602845795),
                                              new Plural(0, 0), new Plural(0.429829743600304, -0.25543373214299)); // TODO: 初始化为适当的值
            EField actual = new EField();

            actual = ReflectEfieldCal.ReflectEfield(e, rayIn, rayOut, l, Conduct, Epara, s1, s2, f);
            Assert.IsTrue(Math.Abs(actual.X.Re - expected.X.Re) < 0.0000001 && Math.Abs(actual.X.Im - expected.X.Im) < 0.0000001 &&
                          Math.Abs(actual.Y.Re - expected.Y.Re) < 0.0000001 && Math.Abs(actual.Y.Im - expected.Y.Im) < 0.0000001 &&
                          Math.Abs(actual.Z.Re - expected.Z.Re) < 0.0000001 && Math.Abs(actual.Z.Im - expected.Z.Im) < 0.0000001);
            //Assert.Inconclusive("验证此测试方法的正确性。");
        }
Example #28
0
        public void ReflectEfieldTest2()
        {
            EField      e        = new EField(new Plural(0, 0), new Plural(1, 0), new Plural(1, 0));                                                  // TODO: 初始化为适当的值
            RayInfo     rayIn    = new RayInfo(new Point(0, 0, 0), new Point(1, 0, 0));                                                               // TODO: 初始化为适当的值
            Face        face     = new SpaceFace(new Point(6, -2, 3), new Point(6, -2, -3), new Point(6 + 4 / Math.Sqrt(3), 2, 0));
            RayInfo     rayOut   = new RayInfo(new Point(0, 0, 0), new Point(-1, Math.Sqrt(3), 0));                                                   // TODO: 初始化为适当的值
            SpectVector l        = face.GetNormalVector();                                                                                            // TODO: 初始化为适当的值
            double      Conduct  = 0;                                                                                                                 // TODO: 初始化为适当的值
            double      Epara    = 4.1;                                                                                                               // TODO: 初始化为适当的值
            double      s1       = 1;                                                                                                                 // TODO: 初始化为适当的值
            double      s2       = 1;                                                                                                                 // TODO: 初始化为适当的值
            double      f        = 1000;                                                                                                              // TODO: 初始化为适当的值
            EField      expected = new EField(new Plural(0.0623877164578374, 0.108058694673174),
                                              new Plural(0.0360195648910585, 0.0623877164578365), new Plural(0.0968928150328006, 0.167823278525182)); // TODO: 初始化为适当的值
            EField actual = new EField();

            actual = ReflectEfieldCal.ReflectEfield(e, rayIn, rayOut, l, Conduct, Epara, s1, s2, f);
            Assert.IsTrue(Math.Abs(actual.X.Re - expected.X.Re) < 0.0000001 && Math.Abs(actual.X.Im - expected.X.Im) < 0.0000001 &&
                          Math.Abs(actual.Y.Re - expected.Y.Re) < 0.0000001 && Math.Abs(actual.Y.Im - expected.Y.Im) < 0.0000001 &&
                          Math.Abs(actual.Z.Re - expected.Z.Re) < 0.0000001 && Math.Abs(actual.Z.Im - expected.Z.Im) < 0.0000001);
            //Assert.Inconclusive("验证此测试方法的正确性。");
        }
Example #29
0
        public void ReflectEfieldTest6()
        {
            EField      e        = new EField(new Plural(0, 0), new Plural(1, 0), new Plural(1, 0));                                                  // TODO: 初始化为适当的值
            RayInfo     rayIn    = new RayInfo(new Point(0, 0, 0), new Point(1, 0, 0));                                                               // TODO: 初始化为适当的值
            Face        face     = new SpaceFace(new Point(6, -2, 3), new Point(6, -2, -3), new Point(6 + 4 * Math.Sqrt(3), 2, 0));
            RayInfo     rayOut   = new RayInfo(new Point(0, 0, 0), new Point(1, Math.Sqrt(3), 0));                                                    // TODO: 初始化为适当的值
            SpectVector l        = face.GetNormalVector();                                                                                            // TODO: 初始化为适当的值
            double      Conduct  = 0;                                                                                                                 // TODO: 初始化为适当的值
            double      Epara    = 6.2;                                                                                                               // TODO: 初始化为适当的值
            double      s1       = 1;                                                                                                                 // TODO: 初始化为适当的值
            double      s2       = 1;                                                                                                                 // TODO: 初始化为适当的值
            double      f        = 1000;                                                                                                              // TODO: 初始化为适当的值
            EField      expected = new EField(new Plural(0.0304958700190565, 0.0528203962940216),
                                              new Plural(-0.0176067987646741, -0.0304958700190561), new Plural(0.161801754519918, 0.28024885958228)); // TODO: 初始化为适当的值
            EField actual = new EField();

            actual = ReflectEfieldCal.ReflectEfield(e, rayIn, rayOut, l, Conduct, Epara, s1, s2, f);
            Assert.IsTrue(Math.Abs(actual.X.Re - expected.X.Re) < 0.0000001 && Math.Abs(actual.X.Im - expected.X.Im) < 0.0000001 &&
                          Math.Abs(actual.Y.Re - expected.Y.Re) < 0.0000001 && Math.Abs(actual.Y.Im - expected.Y.Im) < 0.0000001 &&
                          Math.Abs(actual.Z.Re - expected.Z.Re) < 0.0000001 && Math.Abs(actual.Z.Im - expected.Z.Im) < 0.0000001);
            //Assert.Inconclusive("验证此测试方法的正确性。");
        }
Example #30
0
        public void ReflectEfieldTest15()
        {
            EField      e        = new EField(new Plural(0, 0), new Plural(1, 0), new Plural(1, 0));                                                 // TODO: 初始化为适当的值
            RayInfo     rayIn    = new RayInfo(new Point(0, 0, 0), new Point(1, 0, 0));                                                              // TODO: 初始化为适当的值
            Face        face     = new SpaceFace(new Point(6, -2, 3), new Point(6, -2, -3), new Point(6 + 4 * Math.Sqrt(3), 2, 0));
            RayInfo     rayOut   = new RayInfo(new Point(0, 0, 0), new Point(1, Math.Sqrt(3), 0));                                                   // TODO: 初始化为适当的值
            SpectVector l        = face.GetNormalVector();                                                                                           // TODO: 初始化为适当的值
            double      Conduct  = 0;                                                                                                                // TODO: 初始化为适当的值
            double      Epara    = 1 / 80.4;                                                                                                         // TODO: 初始化为适当的值
            double      s1       = 1;                                                                                                                // TODO: 初始化为适当的值
            double      s2       = 1;                                                                                                                // TODO: 初始化为适当的值
            double      f        = 1000;                                                                                                             // TODO: 初始化为适当的值
            EField      expected = new EField(new Plural(-0.221914313088277, -0.37182527838564),
                                              new Plural(0.128122288398547, 0.214673424567456), new Plural(0.49998683666538, -0.00362810713003811)); // TODO: 初始化为适当的值
            EField actual = new EField();

            actual = ReflectEfieldCal.ReflectEfield(e, rayIn, rayOut, l, Conduct, Epara, s1, s2, f);
            Assert.IsTrue(Math.Abs(actual.X.Re - expected.X.Re) < 0.0000001 && Math.Abs(actual.X.Im - expected.X.Im) < 0.0000001 &&
                          Math.Abs(actual.Y.Re - expected.Y.Re) < 0.0000001 && Math.Abs(actual.Y.Im - expected.Y.Im) < 0.0000001 &&
                          Math.Abs(actual.Z.Re - expected.Z.Re) < 0.0000001 && Math.Abs(actual.Z.Im - expected.Z.Im) < 0.0000001);
            //Assert.Inconclusive("验证此测试方法的正确性。");
        }
Example #31
0
        public void ReflectEfieldTest1()
        {
            EField      e        = new EField(new Plural(0, 0), new Plural(1, 0), new Plural(1, 0));                                                      // TODO: 初始化为适当的值
            RayInfo     rayIn    = new RayInfo(new Point(0, 0, 0), new Point(1, 0, 0));                                                                   // TODO: 初始化为适当的值
            Face        face     = new SpaceFace(new Point(6, -2, -3), new Point(6, -2, 3), new Point(6, 2, 0));
            RayInfo     rayOut   = new RayInfo(new Point(0, 0, 0), new Point(-1, 0, 0));                                                                  // TODO: 初始化为适当的值
            SpectVector l        = face.GetNormalVector();                                                                                                // TODO: 初始化为适当的值
            double      Conduct  = 0;                                                                                                                     // TODO: 初始化为适当的值
            double      Epara    = 4.1;                                                                                                                   // TODO: 初始化为适当的值
            double      s1       = 1;                                                                                                                     // TODO: 初始化为适当的值
            double      s2       = 1;                                                                                                                     // TODO: 初始化为适当的值
            double      f        = 1000;                                                                                                                  // TODO: 初始化为适当的值
            EField      expected = new EField(new Plural(0, 0),
                                              new Plural(-0.0847023107852173, -0.146708705798483), new Plural(-0.0847023107852173, -0.146708705798483));; // TODO: 初始化为适当的值
            EField actual = new EField();

            actual = ReflectEfieldCal.ReflectEfield(e, rayIn, rayOut, l, Conduct, Epara, s1, s2, f);
            Assert.IsTrue(Math.Abs(actual.X.Re - expected.X.Re) < 0.0000001 && Math.Abs(actual.X.Im - expected.X.Im) < 0.0000001 &&
                          Math.Abs(actual.Y.Re - expected.Y.Re) < 0.0000001 && Math.Abs(actual.Y.Im - expected.Y.Im) < 0.0000001 &&
                          Math.Abs(actual.Z.Re - expected.Z.Re) < 0.0000001 && Math.Abs(actual.Z.Im - expected.Z.Im) < 0.0000001);
            //Assert.Inconclusive("验证此测试方法的正确性。");
        }