Last modified 1 September 2003 by jdavis@math.wisc.edu
Version History
1.6.0 (1 September 2003)
- All constants have been renamed to use Cocoa's InterCaps convention instead of OpenGL's CAPS_AND_UNDERSCORES convention. Throughout the kit, many method and function names have been changed for better consistency. All angles are now stated in radians, not degrees.
- Tree datastructures were improved:
- SMKBinaryTree acquired removeRoot.
- The reference counting behavior of SMKSplayTree was altered, in order to correct bugs, improve performance, and conform to conventions. Also, bugs in SMKResourceManager's splay tree implementation were corrected.
- SMKTree acquired methods to iterate selectors along paths and methods to access children by index.
- SMKSceneTree replaced SMKElementTree. It now features bounding radii and inverse kinematics methods.
- The new version of SMKTransformation is semi-abstract.
- SMKAxisTransformation was introduced as a concrete subclass.
- SMKCamera was redesigned to attach, instead of subclass, SMKTransformation. It now simulates viewing transformations and supports tactile mouse manipulation. It also handles orthogonal projections differently.
- The SMKDrawing protocol replaced the SMKElement class. Consequently, SMKModelElement and SMKBubbleElement were replaced by SMKModelDrawer and SMKBubbleDrawer.
- SMKShape now stores its bounding radius.
- SMKModelDrawer now lets you force reflection and translucency explicitly.
- SMKBubbleDrawer now assumes that the depth range is [0, 1], and does not draw when it is clipped by the near and far clipping planes. Also, a bug in its occlusion testing was fixed.
- The term "managed drawing object" was shortened to "managed drawer" in SMKManagedDrawing and SMKDrawingManager. SMKDrawingManager now ignores requests to register managed drawers that are already registered.
- SMKTester's memory allocation was made more user-friendly and more efficient, and an error-reporting bug was fixed.
- Many SMKUtilities were added relating to vectors, angles, 3D projection, and the intersection of lines with planes and spheres.
1.5.0 (29 September 2002)
- The prefix "SK" was changed to "SMK" everywhere in the SMea Kit and retroactively in this version history. Many method names were changed in order to maintain consistency with Cocoa conventions and the numerous changes in this SMea Kit version.
- Doubles replaced floats everywhere precision is useful, except in large geometry arrays. BOOLs and unsigned ints replaced ints where appropriate. It is now assumed that OpenGL types (GLfloat, etc.) are the same as standard types (float, etc.); the code explicitly states where this assumption is used.
- Frivolous autoreleases were replaced by releases throughout the kit.
- SMKElementTree replaced SMKFigure.
- SMKElement acquired select. SMKModelElement now handles reflection and translucency automatically; it conforms to SMKManagedDrawing.
- SMKDrawingManager, SMKManagedDrawing, and SMKBubbleElement replaced the less competent SMKBubble, SMK2DContext, and SMKFont. The new bubbles require Mac OS 10.2.
- SMKMatrix was introduced; SMea Kit classes no longer deal with matrices in their raw form. SMKTransformation acquired matrix methods and more angular controls, and consolidated some application methods.
- SMKDatabase was renamed SMKResourceManager. It now has two distinct implementations.
- SMKBinaryTree, SMKInterpolator, SMKTransformation, and their descendants now conform to NSCopying. SMKInterpolator has also adopted NSCoding.
- SMKCamera now emulates gluLookAt() completely.
- SMKBinaryTree acquired iteration methods with two object arguments. SMKTree acquired endOfPath:ofLength:.
- SMKTexture acquired applyNoTexture.
- A few SMKUtilities relating to matrices, angles, and quadratics were added or changed.
1.4.0 (3 May 2002)
- Throughout the SMea Kit, OpenGL types (GLfloat, etc.) were replaced with standard types (float, etc.) whenever possible, and methods that return objects were typed to id.
- SMKBubble, SMK2DContext, and SMKFont were introduced.
- The SMKSplayTree/SMKResource/SMKDatabase system now handles the release of resources transparently.
- The class hierarchy at SMKTransformation was massively altered; in particular, it now contains SMKCamera.
- SMKModelVNT was split into SMKShape and SMKModel.
- SMKBinaryTree, SMKShape, SMKTransformation, and their descendents now enjoy storage using NSCoding.
- SMKBinaryTree acquired iteration methods.
- SMKFigure acquired limb shortcuts, and its limb hierarchy was made more left-heavy.
- SMKTexture loads faster than previously, but also upside-down.
1.3.2 (6 March 2002)
- A bug in SMKModelVNT's setNumberOfVertices: (introduced in 1.3.1) was fixed.
- SMKTexture was streamlined.
- SMKTransformation acquired vector application methods.
1.3.1 (3 March 2002)
- The master header file SMeaKit.h was introduced.
- Bugs were corrected in SMKFigure's arm and leg posing methods.
- Resizing an SMKModelVNT no longer obliterates its old data. Also, its constructSphereOfRadius:slices:stacks: method now constructs redundant vertices to handle texture seams correctly.
- SMKTexture now loads images in an orientation-preserving manner.
1.3.0 (20 February 2002)
- Most GLdoubles were replaced with GLfloats (in SMKUtilities, SMKCamera, and SMKTester).
- The SMKFigure, SMKElementVNT, SMKModelVNT, and SMKTexture classes were introduced.
- The resources stored in an SMKDatabase can now release themselves from the database. To facilitate this improvement, they descend from the new SMKResource class; also, SMKSplayTree stores an object, rather than a key. SMKResourceTree was absorbed into SMKDatabase, which was given a sorely needed dealloc method.
- SMKPosition was expanded and renamed SMKTransformation.
- The SMKUtilities were greatly streamlined.
1.2.0 (16 January 2002)
- Throughout the SMea Kit, void methods were modified to return the receiver.
- SMKBinaryTree, SMKSplayTree, SMKResourceTree, and SMKDatabase were introduced, and SMKTree was redesigned as a subclass of SMKBinaryTree.
- SMKList was removed; so were all of the SMea Kit's thread-safety mechanisms, including SMKOpenGLContext and SMKView and the relevant parts of SMKCamera and SMKTester.
- A typographical error in SMKPosition's compose method was corrected.
- SMKSphericalCoordinates was renamed SMKGetSphericalCoordinates.
1.1.1 (27 July 2001)
- Numerous errors in this manual were corrected; no changes were made to the code.
1.1.0 (24 July 2001)
1.0.0 (24 June 2001)