FuzzMeasure 3.1b5
• Chris Liscio
• Chris Liscio
I put FuzzMeasure 3.1b5 online at the latest builds page, so get over there to check it out.
The additions might not seem too big, but they took quite a bit of thought/effort to get fixed. Also, both of these new items have annoyed me for years now.
First I decided to solve a problem with the labeling of the frequency axis. I had a very simple algorithm which went through the logarithmic 'major' and 'minor' values, labeling and drawing major lines, and only drawing minor lines. (So, the end result was you'd see dark gray lines labeled 10, 100, 1000, 10000, and the gray lines representing 20, 30, … 200, 300, … in between).
Unfortunately, this simple algorithm falls apart if you're zoomed into a particular range. Let's take 80 to 180 Hz for example. The old algorithm would draw light gray lines for 80, 90, 110, 120, … to 180. However, only a label was shown for '100'—which is useless for reading a graph.
With the new algorithm, you'd actually see labels for all the values listed above, because the number of labels falls below a threshold, causing the minor labels to be printed. As always, overlapping labels are thrown away, with preference given to major labels.
Furthermore, I added pixel-width detection and will drop the major/minor threshold provided the minor lines aren't too dense on the screen. So, if you're looking at the values between 3 and 5, you'd now see 3, 4, and 5 show up as major (dark gray) lines with labels, and values 3.1, 3.2, … will be drawn in light gray on the graph. Of course, this is provided the window is sized such that the spacing between those lines doesn't fall below 4 pixels apart.
So, that fix was quite a beast. "Graphing is hard…"
The other fix I put in was to solve a long-standing gripe I had with my 3D waterfall plot's mouse control. In the past, I've used some Apple sample code (trackball.{c,h} for all you developers in the audience) to provide mouse-based control to the 3D scene. In a nutshell, it acts like a giant sphere is mapped to the display, and your mouse clicks control the positioning of that sphere.
Anyway, the problem that'd show up was the graph could end up tilted in an awkward position quite easily. The control scheme was terrible!
So, now, I've set up the control as follows. To manipulate the rotation about the Y axis, you move the mouse along the X axis on the display. To manipulate the rotation about the X axis, you move the mouse along the Y axis on the display. If you wish to slide the graph along the X axis, hold down the shift key and move the mouse around. This is obviously much more clear if you play around with it yourself rather than talking about it…
In addition to improved controls, I've also added limits internally so that you can't shoot yourself in the foot and end up looking at the backside or underside of the waterfall by accident, requiring you to select one of the preset cameras to get things back to normal again.
Wow, this turned out to be quite a mouthful in the end. :)
So, what are you waiting for? Get over to the latest builds page and download a copy to try out!