Esempio n. 1
0
 public Renderer(MandelPos position, ColorMappings.ColorMap colorMap, FastImage fastImage, int maxIterations)
 {
     _position       = position;
     _colorMap       = colorMap;
     _fastImage      = fastImage;
     _maxIterations  = maxIterations;
     _pixelBufferPtr = fastImage.GetPointer();
 }
Esempio n. 2
0
        private void ZoomSelectionHandler_ZoomSelected(object sender, ZoomSelectionEventArgs e)
        {
            // magnitude of height and width in complex plane
            double complexPlaneWidth  = CurrentFrame.Position.XDiff;
            double complexPlaneHeight = CurrentFrame.Position.YDiff;

            // magnitude of starting points in complex plane
            double complexRectX = (complexPlaneWidth * e.StartX) / RenderSizeRef.DisplayWidth;
            double complexRectY = (complexPlaneHeight * e.StartY) / RenderSizeRef.DisplayHeight;

            // length of the zooming rectangle in the complex plane
            double complexRectWidth  = (complexPlaneWidth * e.Width) / RenderSizeRef.DisplayWidth;
            double complexRectHeight = (complexPlaneHeight * e.Height) / RenderSizeRef.DisplayHeight;

            // calculate new positions in mandelbrot set
            MandelPos pos = new MandelPos(CurrentFrame.Position.XMin + complexRectX,
                                          CurrentFrame.Position.XMin + complexRectX + complexRectWidth,
                                          CurrentFrame.Position.YMin + complexRectY,
                                          CurrentFrame.Position.YMin + complexRectY + complexRectHeight);

            // enque and render
            SubmitFrame(new MandelFrame(this, pos));
        }