Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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());
        }