public Renderer(MandelPos position, ColorMappings.ColorMap colorMap, FastImage fastImage, int maxIterations) { _position = position; _colorMap = colorMap; _fastImage = fastImage; _maxIterations = maxIterations; _pixelBufferPtr = fastImage.GetPointer(); }
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)); }