diff options
author | Gael Guennebaud <g.gael@free.fr> | 2008-08-27 00:46:24 +0000 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2008-08-27 00:46:24 +0000 |
commit | 8e8019d2898fbb0bdd4af53bc0a4852e37653385 (patch) | |
tree | 96e6c38e3555bc2483fbd0e71a8cc952556a3bb9 /doc/QuickStartGuide.dox | |
parent | 083ffa8c414c5e2a3d781996bd4e4ac9a32357a5 (diff) |
improvements in geometry tutorial
Diffstat (limited to 'doc/QuickStartGuide.dox')
-rw-r--r-- | doc/QuickStartGuide.dox | 65 |
1 files changed, 61 insertions, 4 deletions
diff --git a/doc/QuickStartGuide.dox b/doc/QuickStartGuide.dox index 004156873..a4f2db946 100644 --- a/doc/QuickStartGuide.dox +++ b/doc/QuickStartGuide.dox @@ -522,7 +522,7 @@ To transform more than a single vector the prefered representations are rotation for other usage Rotation2D and Quaternion are the representations of choice as they are more compact, fast and stable. AngleAxis are only useful to create other rotation objects. -\subsection TutorialGeoCommonRotationAPI Common API of rotation types +\subsection TutorialGeoCommonRotationAPI Common API across rotation types To some extent, Eigen's \ref Geometry_Module "geometry module" allows you to write generic algorithms working on both 2D and 3D rotations of any of the five above types. @@ -559,19 +559,76 @@ In Eigen we have chosen to not distinghish between points and vectors such that actually represented by displacement vector from the origine (pt \~ pt-0). With that in mind, real points and vector distinguish when the rotation is applied. <table class="tutorial_code"> -<tr><td>Creation</td><td>\code +<tr><td></td><td>\b 3D </td><td>\b 2D </td></tr> +<tr><td>Creation \n <span class="note">rot2D can also be an angle in radian</span></td><td>\code Transform3f t; -t.setFrom \endcode</td></tr> +t.fromPositionOrientationScale( + pos,any_3D_rotation,Vector3f(sx,sy,sz)); \endcode</td><td>\code +Transform2f t; +t.fromPositionOrientationScale( + pos,any_2D_rotation,Vector2f(sx,sy)); \endcode</td></tr> <tr><td>Apply the transformation to a \b point </td><td>\code Vector3f p1, p2; +p2 = t * p1;\endcode</td><td>\code +Vector2f p1, p2; p2 = t * p1;\endcode</td></tr> <tr><td>Apply the transformation to a \b vector </td><td>\code Vector3f v1, v2; +v2 = t.linear() * v1;\endcode</td><td>\code +Vector2f v1, v2; v2 = t.linear() * v1;\endcode</td></tr> <tr><td>Concatenate two transformations</td><td>\code +t3 = t1 * t2;\endcode</td><td>\code t3 = t1 * t2;\endcode</td></tr> <tr><td>OpenGL compatibility</td><td>\code -glLoadMatrixf(t.data());\endcode</td></tr> +glLoadMatrixf(t.data());\endcode</td><td>\code +Transform3f aux(Transform3f::Identity); +aux.linear().corner<2,2>(TopLeft) = t.linear(); +aux.translation().start<2>() = t.translation(); +glLoadMatrixf(aux.data());\endcode</td></tr> +<tr><td colspan="3">\b Component \b accessors</td></tr> +<tr><td>translation part</td><td>\code +t.translation() = vec3; +vec3 = t.translation(); +\endcode</td><td>\code +t.translation() = vec2; +vec2 = t.translation(); +\endcode</td></tr> +<tr><td>linear part</td><td>\code +t.linear() = mat3x3; +mat3x3 = t.linear(); +\endcode</td><td>\code +t.linear() = mat2x2; +mat2x2 = t.linear(); +\endcode</td></tr> +<tr><td colspan="3">\b Editing \b shortcuts</td></tr> +<tr><td>Applies a translation</td><td>\code +t.translate(Vector3f(tx, ty, tz)); +t.pretranslate(Vector3f(tx, ty, tz)); +\endcode</td><td>\code +t.translate(Vector2f(tx, ty)); +t.pretranslate(Vector2f(tx, ty)); +\endcode</td></tr> +<tr><td>Applies a rotation \n <span class="note">rot2D can also be an angle in radian</span></td><td>\code +t.rotate(rot3D); +t.prerotate(rot3D); +\endcode</td><td>\code +t.rotate(rot2D); +t.prerotate(rot2D); +\endcode</td></tr> +<tr><td>Applies a scaling</td><td>\code +t.scale(Vector3f(sx, sy, sz)); +t.scale(Vector3f::Constant(s)); +t.prescale(Vector3f(sx, sy, sz)); +\endcode</td><td>\code +t.scale(Vector2f(tx, ty)); +t.scale(Vector2f::Constant(s)); +t.prescale(Vector2f(tx, ty)); +\endcode</td></tr> +<tr><td>Applies a shear transformation \n(2D only)</td><td></td><td>\code +t.shear(sx,sy); +t.preshear(sx,sy); +\endcode</td></tr> </table> |