예제 #1
0
        //求透射电场强度的垂直分量by Zhuo Liu 2015,3,24:
        //private Efield GetVerticalEfield(Efield e, RayInfo rayIn, RayInfo rayOut, VectorInSpace lVector, double Conduct, double Epara, double inDistance, double outDistance, double inputFrequency)
        public EField GetVerticalEfield()
        {
            //当入射波和相交面垂直时,求水平分量和垂直分量没有意义
            if (rayIn.RayVector.IsParallelAndSamedirection(intersectionFace.NormalVector))
            {
                return(null);
            }
            //原static语句:double reflectAngle = SpectVector.VectorPhase(rayIn.RayVector, l);
            Plural verticalOfE = e.GetVerticalE(rayIn.RayVector, verticalVector);
            Plural vertiValue  = GetVerticalRefractance();
            Plural A           = new Plural(inDistance / (inDistance + outDistance));
            Plural E           = verticalOfE * vertiValue * A * GetPhase();

            // 原static语句:Efield Vefield = SpectVector .VectorDotMultiply (E, VectorInSpace.VectorCrossMultiply (rayIn .RayVector ,l ));
            SpectVector tempVector = rayIn.RayVector.CrossMultiplied(verticalVector).GetNormalizationVector();

            return(tempVector.DotMultiplied(E));
        }
예제 #2
0
        public EField GetHorizonalEfield()
        {
            if (rayIn.RayVector.IsParallelAndSamedirection(intersectionFace.NormalVector))
            {
                return(null);
            }
            Plural horizonOfE = e.GetHorizonalE(rayIn.RayVector, verticalVector);
            Plural horiValue  = GetHorizonalRefractance();
            Plural A          = new Plural(inDistance / (inDistance + outDistance));
            Plural E          = horizonOfE * horiValue * A * GetPhase();

            //原static语句:VectorInSpace l1 = VectorInSpace.VectorCrossMultiply(rayOut.RayVector, VectorInSpace.VectorCrossMultiply(rayIn.RayVector, l));
            SpectVector temp1      = rayIn.RayVector.CrossMultiplied(verticalVector);
            SpectVector temp2      = GetRayOut().RayVector;
            SpectVector tempVector = temp2.CrossMultiplied(temp1).GetNormalizationVector();

            return(tempVector.DotMultiplied(E));
        }