Previous version updates:
• Version 5.0 to Version 5.1 • Version 5.1 to Version 5.2 • Version 5.2 to Version 5.3 • Version 5.3 to Version 5.4 • Version 5.4 to Version 5.5 • Version 5.5 to Version 5.6 • Version 5.6 to Version 5.7 • Version 5.7 to Version 5.8 • Version 5.8 to Version 5.9 • Version 5.9 to Version 5.10 • Version 5.10 to Version 5.11 April 10, 2014. The top-level solutions files for MSVS 2012 and MSVS 2013 showed the correct build order for the libraries, but the parallel compiling in multiple threads ignored the order. The library build order was determined from the project reference mechanism in all the sample applications, but the libraries themselves do not have the references. The project dependencies also had to be properly set up (via the check box dialog). The solutions were updated in the WildMagic5p11.zip file. [Remove the .txt extension from the files below after downloading.] March 10, 2014. The function CreateFreeSpline allocated delta, invDelta, and fDeriv to have mNumSamples values. These needed to be mNumSegments and the loop that initializes them need an upper bound of mNumSegments. (Thanks to Seo Bong Hee for reporting this bug.) On page 6, the pseudocode for factoring into xzy-rotation when z = +pi/2 had theta_x = atan2(-r20,r22). The right-hand side should be -atan2(-r20,r22). The Wild Magic source code, however, has the correct equation. (Thanks to Kostantinos Arvanitis for reporting this error.) February 28, 2014. Fixed a typographical error on a subscript. Change the name X to P in the final equations to match the description provided previously. February 14, 2014. In the case of cylinder axis intersecting the plane in a unique point and axis direction not parallel to the plane, the Find function set the ellipse center using the projection 'center' rather than mCylinder->Axis.Origin. (Thanks to Marcel von Olnhausen for reporting this bug.) February 1, 2014. The matrix Transpose(A)*A is size (n+1)x(n+1), where (n+1) is the number of control points. The matrix is said to be banded with (d+1) lower bands and (d+1) upper bands. This is true when n > d, where d is the degree of the polynomial. The case n = d (one more control point than the degree of the polynomial) is an edge case, and the matrix has d lower bands and d upper bands. (Thanks to Greg Philbrick for reporting this bug.) January 23, 2014. Yet another test case that exposed a problem. In the Update(i) function, when point i is inside the current hull, a containing tetrahedron is identified. That tetrahedron is subdivided into 4 tetrahedron with common vertex i. When point i is on a tetrahedron face (but not an edge), there must be only 3 subtetrahedra. When point i is on a tetrahedron edge, there must be only 2 subtetrahedra. (The initialization code already removes duplicate vertices, so no fear of point i being an already existing vertex.) Added a test for degenerate subtetrahedra, ignoring them when they occur. Renamed some input variables for consist naming convention (not a code change). |