Status Screenshots Download Mailing List List Archive Quesa Forum
Todo Bug List CVS Server API Reference
Documentation Building Quesa LGPL License Carbon Dating
Contributors Quesa Logo Links |
## Quesa BugsQuesa uses the Bugzilla bug tracking system to manage bugs and track feature requests. The Quesa bug database can be found here. If you have encountered a bug in Quesa, or would like to log a feature request, please create a new bug in the database and post a reference to it to the mailing list. ## Bug List (Obsolete)Please note this section is obsolete - these bugs have not been migrated to the current Bugzilla system, which is now the definitive list.
If you encounter problems running Quesa, please submit a patch or a bug report to the mailing list: this is the best way to make sure it will be fixed in future versions of the library. ## Missing FunctionsThe following functions have been identified as missing from QD3D, and potential candidates for including in Quesa: TQ3RationalPoint3D * Q3Param2D_To3D( const TQ3Param2D *param2D, TQ3RationalPoint3D *result); TQ3Param2D * Q3RationalPoint3D_ToParam2D( const TQ3RationalPoint3D *rationalPoint3D, TQ3Param2D *result); TQ3RationalPoint3D * Q3RationalPoint3D_RRatio( const TQ3RationalPoint3D *p1, const TQ3RationalPoint3D *p2, float r1, float r2, TQ3RationalPoint4D *result); float * Q3Param2D_CrossProductTri( const TQ3Param2D *p1, const TQ3Param2D *p2, const TQ3Param2D *p3); TQ3Status Q3Vector2D_To3DTransformArray( const TQ3Vector2D *inVectors2D, const TQ3Matrix3x3 *matrix3x3, TQ3RationalPoint3D *outRationalPoints3D, TQ3Uns32 numVectors, TQ3Uns32 inStructSize, TQ3Uns32 outStructSize); TQ3Status Q3Vector3D_To4DTransformArray( const TQ3Vector3D *inVectors3D, const TQ3Matrix4x4 *matrix4x4, TQ3RationalPoint4D *outRationalPoints4D, TQ3Uns32 numVectors, TQ3Uns32 inStructSize, TQ3Uns32 outStructSize); TQ3Status Q3Point2D_To3DTransformArray( const TQ3Point2D *inPoints2D, const TQ3Matrix3x3 *matrix3x3, TQ3RationalPoint3D *outRationalPoints3D, TQ3Uns32 numPoints, TQ3Uns32 inStructSize, TQ3Uns32 outStructSize); TQ3PolarPoint * Q3Param2D_ToPolar( const TQ3Param2D *param2D, TQ3PolarPoint *result); TQ3Param2D * Q3PolarPoint_ToParam2D( const TQ3PolarPoint *polarPoint, TQ3Param2D *result); TQ3PolarPoint * Q3Vector2D_ToPolar( const TQ3Vector2D *vector2D, TQ3PolarPoint *result); TQ3Vector2D * Q3PolarPoint_ToVector2D( const TQ3PolarPoint *polarPoint, TQ3Vector2D *result); TQ3SphericalPoint * Q3Vector3D_ToSpherical( const TQ3Vector3D *vector3D, TQ3SphericalPoint *result); Q3Vector3D * Q3SphericalPoint_ToVector3D( const TQ3SphericalPoint *sphericalPoint, TQ3Vector3D *result); TQ3Matrix4x4 * Q3Matrix4x4_Adjoint( const TQ3Matrix4x4 *matrix4x4, TQ3Matrix4x4 *result); ## Documentation ErrorsThe following errors have been identified in Apple's "3D Graphics Programming With QuickDraw 3D 1.5.4" book. These should be corrected for the Quesa replacement for this documentation. - Omission: Although undocumented, on entry to Q3Point2D_RRatio, Q3Param2D_RRatio, Q3Point3D_RRatio or Q3RationalPoint4D_RRatio, the result parameter can be the same as either p1 or p2 (or both).
- Omission: Although undocumented, on entry to Q3Point2D_Vector2D_Add, Q3Param2D_Vector2D_Add, Q3Point3D_Vector3D_Add, Q3Point2D_Vector2D_Subtract, Q3Param2D_Vector2D_Subtract or Q3Point3D_Vector3D_Subtract, the result parameter can be the same as the input point parameter.
- Omission: Although undocumented, on entry to Q3Vector3D_Cross, the result parameter can be the same as either v1 or v2 (or both).
- Omission: Although undocumented, on entry to Q3Point3D_To3DTransformArray, the outPoints3D parameter can be the same as the inPoints3D parameter.
- Omission: Although undocumented, on entry to Q3RationalPoint4D_To4DTransformArray, the outPoints4D parameter can be the same as the inPoints4D parameter.
- Omission: Although undocumented, on entry to Q3Vector2D_Negate or Q3Vector3D_Negate, the result parameter can be the same as the input vector parameter.
- Inconsistency: In Q3Point3D_To3DTransformArray and Q3Point3D_To4DTransformArray, rename inVertex to inPoints3D to match names in "QD3DMath.h".
- Inconsistency: In Q3RationalPoint4D_To4DTransformArray, rename inVertex to inPoints4D to match names in "QD3DMath.h".
- Inconsistency: In Q3Point3D_To3DTransformArray, rename outVertex to outPoints3D to match names in "QD3DMath.h".
- Inconsistency: In Q3Point3D_To4DTransformArray and Q3RationalPoint4D_To4DTransformArray, rename outVertex to outPoints4D to match names in "QD3DMath.h".
- Inconsistency: In Q3Point3D_To3DTransformArray, Q3Point3D_To4DTransformArray and Q3RationalPoint4D_To4DTransformArray, rename numVertices to numPoints to match names in "QD3DMath.h".
- Inconsistency: In Q3Point2D_AffineComb, Q3Param2D_AffineComb, Q3Point3D_AffineComb, Q3RationalPoint3D_AffineComb and Q3RationalPoint3D_AffineComb, rename nPoints to numPoints to match names in "QD3DMath.h".
- Inconsistency: In Q3BoundingBox_UnionPoint3D and Q3BoundingSphere_UnionPoint3D, rename pt3D to point3D to match names in "QD3DMath.h".
- Inconsistency: In Q3BoundingBox_UnionRationalPoint4D and Q3BoundingSphere_UnionRationalPoint4D, rename pt4D to point4D to match names in "QD3DMath.h".
- Inconsistency: In Q3BoundingBox_SetFromPoints3D and Q3BoundingSphere_SetFromPoints3D, rename pts to points3D to match names in "QD3DMath.h".
- Inconsistency: Q3BoundingBox_SetFromRationalPoints4D and Q3BoundingSphere_SetFromRationalPoints4D, rename pts to points4D to match names in "QD3DMath.h".
- Inconsistency: In Q3BoundingBox_SetFromPoints3D, Q3BoundingBox_SetFromRationalPoints4D, Q3BoundingSphere_SetFromPoints3D and Q3BoundingSphere_SetFromRationalPoints4D, rename nPts to numPoints to match names in "QD3DMath.h".
- Inaccuracy: The document warns that "the sum of the weights must be 1.0" for the functions Q3Point2D_AffineComb, Q3Param2D_AffineComb, Q3Point3D_AffineComb, Q3RationalPoint3D_AffineComb and Q3RationalPoint3D_AffineComb. In fact, the functions normalize each weight by dividing by the sum of the weights.
- Inaccuracy: The document warns that "QuickDraw 3D mathematical utilities do not automatically normalize vectors. They expect vectors to be normalized by the calling code" (p. 1162). In fact, most mathematical functions do not care if vectors are normalized. The only mathematical functions that do expect vectors to be normalized are Q3Matrix4x4_SetRotateAboutAxis, Q3Matrix4x4_SetRotateVectorToVector, Q3Quaternion_SetRotateAboutAxis and Q3Quaternion_SetRotateVectorToVector.
- Inaccuracy: The document states that the functions Q3Point2D_RRatio, Q3Param2D_RRatio, Q3Point3D_RRatio and Q3RationalPoint4D_RRatio return the point "that lies on the line segment between the points p1 and p2 and that is at a distance from the first point determined by the ratio r1/(r1+r2)." In fact, r1 and r2 are weights and these functions return the point that is at a distance from the first point determined by the ratio r2/(r1+r2).
- Clarification: In the introduction to the section on "Managing Matrices" (p. 1208), the document notes: "Any of the source or destination matrices may be the same matrix. The source matrices are unchanged, unless one of them is also specified as the destination matrix." Although this statement is correct, it should be reiterated for each function with more than one matrix parameter: Q3Matrix3x3_Copy, Q3Matrix4x4_Copy, Q3Matrix3x3_Transpose, Q3Matrix4x4_Transpose, Q3Matrix3x3_Invert, Q3Matrix4x4_Invert, Q3Matrix3x3_Adjoint, Q3Matrix3x3_Multiply and Q3Matrix4x4_Multiply.
- Misprint: In the description of Q3Quaternion_SetMatrix, the matrix parameter is described as a "4-by-by" matrix.
These items can be noted when HeaderDoc comments are added to QuesaMath.h. |

Quesa Web Site hosted by DesignCommunity.com |