/// <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); }
//求得电场的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); }
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("验证此测试方法的正确性。"); }
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("验证此测试方法的正确性。"); }
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("验证此测试方法的正确性。"); }
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("验证此测试方法的正确性。"); }
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("验证此测试方法的正确性。"); }
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("验证此测试方法的正确性。"); }
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("验证此测试方法的正确性。"); }
//求反射电场总值 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); } }
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("验证此测试方法的正确性。"); }
//求反射电场强度的垂直分量 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); }
//求反射电场强度的水平分量 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); }
/// <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); } }
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; }
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; } }
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); }
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("验证此测试方法的正确性。"); }
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("验证此测试方法的正确性。"); }
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("验证此测试方法的正确性。"); }
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("验证此测试方法的正确性。"); }
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("验证此测试方法的正确性。"); }
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("验证此测试方法的正确性。"); }
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("验证此测试方法的正确性。"); }
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("验证此测试方法的正确性。"); }
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("验证此测试方法的正确性。"); }
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("验证此测试方法的正确性。"); }
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("验证此测试方法的正确性。"); }
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("验证此测试方法的正确性。"); }