//求透射电场强度的垂直分量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)); }
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)); }