public SpectrumEditorControl()
        {
            InitializeComponent();
            
            init();

            Spectrum spectrum_ = new Spectrum(ESpectrumTemplate.ExtendedVisible);
            spectrum_.AddSpectralPoint(580, 0);

            SetSpectrum(spectrum_);
        }
예제 #2
0
 public void Redo(Spectrum spec)
 {
     switch (action)
     {
         case EAction.Moved:
             spec.SetSpectralPoint(actionAfter, actionBefore);
             break;
         case EAction.Added:
             spec.AddSpectralPoint(actionAfter);
             break;
         case EAction.Deleted:
             spec.DeleteSpectralPoint(actionBefore);
             break;
         case EAction.None:
         default:
             break;
     }
 }
        private void ParseImage()
        {
            if ((imProp.Image != null) && (imProp.StartPoint != new Point(-1, -1)) && (imProp.EndPoint != new Point(-1, -1)))
            {
                CreateBackBuffer();

                spectrum = new Spectrum();

                int x_len = imProp.EndPoint.X - imProp.StartPoint.X;
                int y_len = imProp.EndPoint.Y - imProp.StartPoint.Y;

                double dLambda = (imProp.EndLambda - imProp.StartLambda) / (double)x_len;
                double dIntensity = (imProp.MaxIntensity - imProp.MinIntensity) / (double)y_len;

                double lambda = imProp.StartLambda;

                for (int xx = 0; xx <= Math.Abs(x_len); xx++)
                {
                    double intensity = imProp.MinIntensity;
                    for (int yy = 0; yy <= Math.Abs(y_len); yy++)
                    {
                        int x = Math.Sign(x_len) * xx + imProp.StartPoint.X;
                        int y = Math.Sign(y_len) * yy + imProp.StartPoint.Y;
                        if (backBufferBMP.GetPixel(x, y) == imProp.GraphColor)
                        {
                            intensity = imProp.MinIntensity + yy * Math.Abs(dIntensity);
                        }

                    }
                    spectrum.AddSpectralPoint(lambda, intensity);
                    lambda += dLambda;
                }
            }
        }
예제 #4
0
        private void GenerateTestData()
        {
            SpectrumLibrary specLib = new SpectrumLibrary();
            for (int i = 0; i < 15; i++)
            {
                Spectrum spec = new Spectrum(ESpectrumTemplate.ExtendedVisible);
                spec.AddSpectralPoint(630, 1);
                spec.Name = "Laser: " + (i);
                spec.Interpolation = ESpectralInterpolation.Peak;
                spec.Clear();
                specLib.AddSpectrum(spec, "Laser");
            }

            for (int i = 0; i < 15; i++)
            {
                Spectrum spec = new Spectrum(ESpectrumTemplate.ExtendedVisible);
                spec.AddSpectralPoint(580, 0);
                spec.Name = "Light: " + (i);
                specLib.AddSpectrum(spec, "Light");
            }

            for (int i = 0; i < 15; i++)
            {
                Spectrum spec = new Spectrum(ESpectrumTemplate.ExtendedVisible);
                spec.AddSpectralPoint(580, 0);
                spec.Name = "Material: " + (i);
                specLib.AddSpectrum(spec, "Materials");
            }

            SetSpectrumLibrary(specLib);
        }