private void ParaxialRayTrace_Load(object sender, EventArgs e) { MarginalRayHeight = BeamExpanderControl.InputbeamDia / 2; InputRayAngle = BeamExpanderControl.InputAngle; ParaxialInputHeighttextBox.Text = MarginalRayHeight.ToString(); ParaxialInputAngletextBox.Text = InputRayAngle.ToString(); Matrix <double> InputMatrix = Matrix <double> .Build.DenseOfArray(new[, ] { { BeamExpanderControl.InputbeamDia }, { 0 } }); Matrix <double> TransferMatrix = Matrix <double> .Build.DenseOfArray(new[, ] { { 1.0, 10.0 }, { 0, 1.0 } }); Matrix <double> TransferMatrixd1 = Matrix <double> .Build.DenseOfArray(new[, ] { { 1.0, BeamExpanderControl.Mind1 }, { 0, 1.0 } }); Matrix <double> TransferMatrixd2 = Matrix <double> .Build.DenseOfArray(new[, ] { { 1.0, BeamExpanderControl.Mind2 }, { 0, 1.0 } }); Matrix <double> Surface1RefractionMatrix = Matrix <double> .Build.DenseOfArray(new[, ] { { 1.0, .0 }, { -1 / PRTfocallength1[0], 1 } }); Matrix <double> Surface2RefractionMatrix = Matrix <double> .Build.DenseOfArray(new[, ] { { 1.0, .0 }, { -1 / PRTfocallength2[0], 1 } }); Matrix <double> Surface3RefractionMatrix = Matrix <double> .Build.DenseOfArray(new[, ] { { 1.0, .0 }, { -1 / PRTfocallength3[0], 1 } }); //Matrix<double> Surface4RefractionMatrix = Matrix<double>.Build.DenseOfArray(new[,] { { 1.0, .0 }, { n1 - n2 / R1 * n2, n1 / n2 } }); //Matrix<double> Surface5RefractionMatrix = Matrix<double>.Build.DenseOfArray(new[,] { { 1.0, .0 }, { n1 - n2 / R1 * n2, n1 / n2 } }); //Matrix<double> Surface6RefractionMatrix = Matrix<double>.Build.DenseOfArray(new[,] { { 1.0, .0 }, { n1 - n2 / R1 * n2, n1 / n2 } }); Matrix <double> lensThicknessMatrix = Matrix <double> .Build.DenseOfArray(new[, ] { { 1.0, 0.0 }, { 0, 1.0 } }); var v = TransferMatrix.Multiply(Surface3RefractionMatrix.Multiply(TransferMatrixd2.Multiply(Surface2RefractionMatrix.Multiply(TransferMatrixd1.Multiply(Surface1RefractionMatrix.Multiply(TransferMatrix)))))).Multiply(InputMatrix); richTextBox1.AppendText(v.ToString()); richTextBox1.AppendText(TransferMatrix.ToString()); richTextBox1.AppendText(Surface1RefractionMatrix.ToString()); richTextBox1.AppendText(TransferMatrixd1.ToString()); richTextBox1.AppendText(Surface2RefractionMatrix.ToString()); richTextBox1.AppendText(TransferMatrixd2.ToString()); richTextBox1.AppendText(Surface3RefractionMatrix.ToString()); richTextBox1.AppendText(TransferMatrix.ToString()); richTextBox1.AppendText(InputMatrix.ToString()); }
public void RayTrace_Load(object sender, EventArgs e) { MarginalRayHeight = BeamExpanderControl.InputbeamDia / 2; InputRayAngle = BeamExpanderControl.InputAngle; InputHeighttextBox.Text = MarginalRayHeight.ToString(); InputAngletextBox.Text = InputRayAngle.ToString(); Matrix <double> InputMatrix = Matrix <double> .Build.DenseOfArray(new[, ] { { 2.5 }, { 0 } }); Matrix <double> TransferMatrix = Matrix <double> .Build.DenseOfArray(new[, ] { { 1.0, 10.0 }, { 0, 1.0 } }); Matrix <double> TransferMatrixd1 = Matrix <double> .Build.DenseOfArray(new[, ] { { 1.0, 14.780 }, { 0, 1.0 } }); Matrix <double> TransferMatrixd2 = Matrix <double> .Build.DenseOfArray(new[, ] { { 1.0, 32.398 }, { 0, 1.0 } }); Matrix <double> Surface1RefractionMatrix = Matrix <double> .Build.DenseOfArray(new[, ] { { 1.0, 0 }, { (n1 - n2[0]) / (R1[0] * n2[0]), n1 / n2[0] } }); Matrix <double> Surface2RefractionMatrix = Matrix <double> .Build.DenseOfArray(new[, ] { { 1.0, 0 }, { (n2[0] - n1) / (R2[0] * n1), n2[0] / n1 } }); Matrix <double> Surface3RefractionMatrix = Matrix <double> .Build.DenseOfArray(new[, ] { { 1.0, 0 }, { (n1 - n3[0]) / (R3[0] * n3[0]), n1 / n3[0] } }); Matrix <double> Surface4RefractionMatrix = Matrix <double> .Build.DenseOfArray(new[, ] { { 1.0, 0 }, { (n3[0] - n1) / (R4[0] * n1), n3[0] / n1 } }); Matrix <double> Surface5RefractionMatrix = Matrix <double> .Build.DenseOfArray(new[, ] { { 1.0, 0 }, { (n1 - n4[0]) / (R5[0] * n4[0]), n1 / n4[0] } }); Matrix <double> Surface6RefractionMatrix = Matrix <double> .Build.DenseOfArray(new[, ] { { 1.0, 0 }, { (n4[0] - n1) / (R6[0] * n1), n4[0] / n1 } }); Matrix <double> lensThicknessMatrix1 = Matrix <double> .Build.DenseOfArray(new[, ] { { 1.0, T1[0] }, { 0, 1.0 } }); Matrix <double> lensThicknessMatrix2 = Matrix <double> .Build.DenseOfArray(new[, ] { { 1.0, T2[0] }, { 0, 1.0 } }); Matrix <double> lensThicknessMatrix3 = Matrix <double> .Build.DenseOfArray(new[, ] { { 1.0, T3[0] }, { 0, 1.0 } }); var a = TransferMatrix.Multiply(InputMatrix); a1 = a.At(0, 0); TTextBox1.Text = a.ToString(); var b = Surface1RefractionMatrix.Multiply(a); b1 = b.At(0, 0); RTextBox1.AppendText(b.ToString()); var c = lensThicknessMatrix1.Multiply(b); c1 = c.At(0, 0); TTextBox2.AppendText(c.ToString()); var d = Surface2RefractionMatrix.Multiply(c); d1 = d.At(0, 0); RTextBox2.AppendText(d.ToString()); var ee = TransferMatrixd1.Multiply(d); ee1 = ee.At(0, 0); TTextBox3.AppendText(ee.ToString()); var ff = Surface3RefractionMatrix.Multiply(ee); ff1 = ff.At(0, 0); RTextBox3.AppendText(ff.ToString()); var gg = lensThicknessMatrix2.Multiply(ff); gg1 = gg.At(0, 0); TTextBox4.AppendText(gg.ToString()); var h = Surface4RefractionMatrix.Multiply(gg); h1 = h.At(0, 0); RTextBox4.AppendText(h.ToString()); var i = TransferMatrixd2.Multiply(h); i1 = i.At(0, 0); TTextBox5.AppendText(i.ToString()); var j = Surface5RefractionMatrix.Multiply(i); j1 = j.At(0, 0); RTextBox5.AppendText(j.ToString()); var k = lensThicknessMatrix3.Multiply(j); k1 = k.At(0, 0); TTextBox6.AppendText(k.ToString()); var l = Surface6RefractionMatrix.Multiply(k); l1 = l.At(0, 0); RTextBox6.AppendText(l.ToString()); var m = TransferMatrix.Multiply(l); m1 = m.At(0, 0); TTextBox7.AppendText(m.ToString()); richTextBox1.AppendText(m.At(0, 0).ToString()); richTextBox1.AppendText(InputMatrix.ToString()); richTextBox1.AppendText(TransferMatrix.ToString()); richTextBox1.AppendText(Surface1RefractionMatrix.ToString()); richTextBox1.AppendText(lensThicknessMatrix1.ToString()); richTextBox1.AppendText(Surface2RefractionMatrix.ToString()); richTextBox1.AppendText(TransferMatrixd1.ToString()); richTextBox1.AppendText(Surface3RefractionMatrix.ToString()); richTextBox1.AppendText(lensThicknessMatrix2.ToString()); richTextBox1.AppendText(Surface4RefractionMatrix.ToString()); richTextBox1.AppendText(TransferMatrixd2.ToString()); richTextBox1.AppendText(Surface5RefractionMatrix.ToString()); richTextBox1.AppendText(lensThicknessMatrix3.ToString()); richTextBox1.AppendText(Surface6RefractionMatrix.ToString()); richTextBox1.AppendText(TransferMatrix.ToString()); }