11Draws the Mandelbrot set. Supports click to change orgin, drag
22to zoom in, and mouse wheel zoom in and out about a point. The
33user can hold the shift key down while dragging the window
4- borders while suppressing the delay for repainting along the way.
5- Supports axis coordinate domain recall via right click.
4+ borders to suppress the delay for repainting along the way.
5+ Supports backtracking the axis coordinate range via right click.
66
77Also, saves and restores the WindowPlacement, in the registry,
88between executions.
@@ -16,43 +16,47 @@ and/or overhead in the OS. I am seeing a factor of 8 to 10
1616improvement with 12 threads.
1717
1818The number of slices defaults to 5000. In the first version
19- the number of slices and the number of threads was the same.
20- As the threads run at different speeds, due to the amount of
21- black space per slice, the current version uses a thread
22- pool where each thread iterates while there is more work to
23- do. The WorkQueue class facilitates this pool. This way,
24- performance is maximized as there are no threads completed
25- until all threads are completed. Each slice is assigned to
26- the next thread in the pool. When the thread finishes with
27- that slice, it getes a new slice from the work queue. All
28- threads in the pool compete for slices on a first come first
29- serve basis. When a thread attempts to get a new slice and
30- there are no more, the thread exits. When all threads exit,
31- the bitmap is painted to the screen.
19+ the number of slices (12) and the number of threads was the
20+ same. As the threads run at different speeds, due to the
21+ amount of black space per slice, the current version uses a
22+ thread pool where each thread iterates while there is more
23+ work to do. The WorkQueue class facilitates this pool. This
24+ way, performance is maximized as no thread completes until
25+ all threads are completed. Each slice is assigned to the
26+ next thread in the pool. When the thread finishes with that
27+ slice, it getes a new slice from the work queue. All threads
28+ in the pool compete for slices on a first come first serve
29+ basis. When a thread attempts to get a new slice and there
30+ are no more, the thread exits. When all threads exit, the
31+ bitmap is painted to the screen.
3232
3333Also, I implemented an HSV/RGB color scheme with a triple log
3434scaling factor to get better color results. This is courtesy
3535of the Windows 11 Copilot (Preview), which was an immense help.
3636The user is able to select the RGB system or the HSV system.
37-
37+
3838The number of slices is adjustable, as are the X and Y axes
3939ranges. The user can choose to see the axes on the final plot.
4040The max iterations can also be adjusted, at the cost of speed.
4141
4242The user can save and restore the plot parameters to and from
4343a file using standard File Save and File Open sequences.
44-
44+
4545Compilation requires that UNICODE be defined. Some of the
4646choices made in code, mainly wstring, do not support detecting
4747UNICODE vs non-UNICODE, so don't compile without UNICODE defined.
4848
4949In case you get linker errors, be sure to include version.lib
50- in the linker input line.
50+ in the linker input line. (This should not be an issue if you
51+ start with a clone of the repository, which will copy the
52+ correct Project Properties.)
5153
5254Microsoft Visual Studio 2022 Community Edition 64 Bit 17.9.5
5355
5456Alex Sokolek, Version 1.0.0.1, Copyright (c) March 27, 2024
55-
57+
5658Version 1.0.0.2 - April 1, 2024 - Added worker thread pool.
5759
5860Version 1.0.0.3 - April 17, 2024 - Updated version for release.
61+
62+ Version 1.0.0.4 - April 20, 2024 - Updated comments.
0 commit comments