4D Rotator Changelog

What's new in 4D Rotator 4.0

Aug 10, 2011
  • lots of changes including much faster rendering
  • Hyper3.java added variable ZF to fix red blue shift problem. Original behavior can be seen by setting ZF=1.0. New code to speed up screen drawing. Old drawing code still used by Printer and imageWriter.
  • Modified doWriteImageDialog to use the directory chosen and remember it
  • for the next save.
  • CDrawPanel.java rewritten to use new faster code. Overlap is still done with the old code. The new code doesn't lend itself to calculating the overlaps. Some restructuring of logic
  • Loader.java after reading in an object, the Vector2D ints are recast as an int[][] objectLines array. These ints represent consecutive lines in the object.
  • Printer.java restored right and left colors
  • ImageWriter.java will create subdirectories to save files in. This came up when I tried to create images/HCUBE as text in dialog and directory "images" did not exist. A printStackTrace() over 50 lines long was generated bu sun code.
  • VPoint.java new class to pass info back to CDrawPanel from fast code.
  • Holds both left and right screen points for a single Vertex.
  • Note: when large images are drawn on my LCD monitor, blinking is seen.
  • It is reminiscent of things that used to be cured in unix X11 by
  • synchronizing double buffering with vertical retrace. But nothing like
  • that seems to exist in java. JPanel is supposed to be double buffered by
  • default.

New in 4D Rotator 3.19 (Aug 10, 2011)

  • Attached is a working version of Vector2D.java. The list.size()=3 messages were coming from a "can't happen" section. Although I still don't know how it happens. The only object I was able to invoke the error was the big hypersphere.

New in 4D Rotator 3.18 (Aug 10, 2011)

  • printer code for a long time has been making view-upside-down printouts.
  • the problem seems to be that for printing, some reason left and right are swapped. Sorry, I had to tweak what looks like correct code to correct a real-world anomaly.
  • set EYESHIFT to 0. though I have done this, I would prefer to leave this in the equations for future use. this is an alternate solution the of the printer problems as well, although the right-left swap is still the real culprit.
  • in rotate4D() I included an if (true) statement to allow switching between original supposedly incorrect rotation equations/code and the supposedly correct code. There may be some sort of rotation convention involved behind the reason involved for using the strange method that we did originally, but at this point it is unknown, and I have no math professor to correct me.
  • changed window exit code to call caller.drawPanel.close() so serial ports get closed. as a result of this, had to change "Hyper3 caller" parameter to final to get it to compile. didn't seem to break anything.

New in 4D Rotator 3.17 (Aug 10, 2011)

  • Only a small amount of functional change but lots of code refactoring.
  • There are several new classes, the most important of these is probably
  • ColorScheme. A ColorScheme consists of 4 colors, the left eye, right
  • eye, overlap to use on black background, and overlap to use on white
  • background.
  • The printer code has been pulled out to a class called Printer.
  • The image out code has been pulled out to a call called ImageWriter.
  • The code to load images from files has been put in a class called
  • Loader.
  • I was going to create a Listener class but ran out of energy.
  • lcd shutter code can be included by removing a comment in ControlFrame
  • and a few more in CDrawPanel.
  • There is a enum called DrawType to control the drawing selections...
  • I have also added red blue/red green radiobuttons. I have tested
  • screen and write codes fairly well, but since I don't own a color
  • printer the printer code could be badly broken and I wouldn't know it.
  • I made alteration mode the default.
  • I turned down the red intensity for screen mode to 128 because at 256 I
  • got a tremendous amount of bleed through of red to my right (blue) eye.
  • I found the floating extra red object very distracting/confusing. If
  • this is a problem then a way to select color intensity should be
  • provided.
  • If you own red-green glasses, you can tweek the red-greed colors...
  • bottom of ColorScheme.java
  • One thing I failed to fix was that when you save a file it should be
  • put in the directory the chooser is pointing to... and that directory
  • should be retained as starting point for the next chooser. Currently the
  • write is always in ".".

New in 4D Rotator 3.16 (Aug 10, 2011)

  • optimized Vector2D overlap code for more speed.

New in 4D Rotator 3.15 (Aug 10, 2011)

  • changed colorPrintMagenta to 0,32,255. too much green.
  • changed printing code so that white background's overlap is black (colorPrintBlack), and black background's overlap color is magenta (colorPrintMagenta).
  • added comment near colors: left is red, right is blue
  • updated outdated description in Hyper3.java

New in 4D Rotator 3.14 (Aug 10, 2011)

  • In ControlFrame there is a menubar menu...
  • Draw, things here affect only the screen drawing under it you can select,
  • red and blue... basically the code you started with red and blue alternating beginnings of what you need for LCD shutter glasses
  • red blue and magenta, working version of my original code to overplot in magenta
  • I also added a draw Frames/sec option. I drew it in green which will probably make it invisible [actually partially visible] with 3-d glasses. It is prelude to a slider to control SLEEPFOR. I did some tests and it will be easy to squeeze the rotate sliders to make room for a new slider.
  • In CDrawPanel lots of code to support the 3 drawing modes selectable
  • from controlframe.
  • CDrawPanel now obeys the color selection for screen colors made in
  • Hyper3. I think magenta didn't get done, but its a trivial fix.
  • Hyper3 found all places where rotate was set, and changed to
  • setRotate(value). I needed this so that the red blue only drawing mode
  • would not stop with just last color showing. I updated the internal date
  • and put a version of 3.11+. The version in 3.11 zip file said 3.10 and
  • had a date in mid June.
  • Vector2D has new version of overplot code. As far as I can tell it
  • correctly handles all cases. Horizontal, vertical and diagonal overlaps
  • work. I have also suppressed the drawing of single point intersections.
  • I did this because it causes noticeable cpu load to include them. I'm
  • not sure what the visual effect is to omit these points. Without 3-d
  • glasses they are invisible.

New in 4D Rotator 3.10 (Aug 10, 2011)

  • sjm When you print, the fitToPage checkbox is being ignored.
  • Instead the fitToWindow logical is being used. That is because fitToWindow
  • is being used in the guts of the code a couple of calls down. The fix is to pass the correct logical down the call stack. Tricky because CDrawPanel doesn't and shouldn't care about fitToWindow, so fitToWindow has to be inserted into the call stack inside Hyper3. sjm new logic to replace overlapped lines with magenta. Visual replacement by overdrawing the intersections and overlaps. I can't see how 3D can look correct without this.
  • changed screenVectors to mediaVectors. just a better naming convention since it is used with both print and screen media.

New in 4D Rotator 3.9 (Aug 10, 2011)

  • sjm added better fit-to-window and fit-to-page code
  • sjm Cosmetic changes to ControlFrame. Lined up the buttons and put the
  • 2d sliders in a recessed panel.
  • sjm Vector2D many methods added. Needs Javadocs added.
  • sjm Hyper3 major changes, including consolidation of all scaling and
  • drawing. Also all the dead code removed.

New in 4D Rotator 3.8 (Aug 10, 2011)

  • fixed save image menu: duplicate items were there. converted to uppercase and made sure only UNIQUE items were left.
  • added fit-to-window.