Differences between revisions 3 and 4
Revision 3 as of 2008-09-05 20:31:43
Size: 1764
Comment:
Revision 4 as of 2008-09-05 20:35:46
Size: 1749
Comment:
Deletions are marked like this. Additions are marked like this.
Line 7: Line 7:
{{{$$Transform \equiv M T S R $$}}} {{{$$ Tr \equiv M T S R $$}}}
Line 9: Line 9:
Where {{{$$M }}} is a mirroring operation about the x-axis, {{{$$T} }}} is a translation, {{{$$S$$}}} is a uniform, positive, non zero scaling operation and {{{$$R$$}}} is a rotation. The Transformobject stores these transformations internally in a 4x4 matrix, as is commonly the case in computer graphics applications that use homogeneous coordinate systems (i.e. OpenGL). In these approaches the 4x4 transformation matrix {{{$$X$$}}} is constructed in this way Where {{{$$M$$}}} is a mirroring operation about the x-axis, {{{$$T$$}}} is a translation, {{{$$S$$}}} is a uniform, positive, non zero scaling operation and {{{$$R$$}}} is a rotation. The Transformobject stores these transformations internally in a 4x4 matrix, as is commonly the case in computer graphics applications that use homogeneous coordinate systems (i.e. OpenGL). In these approaches the 4x4 transformation matrix is constructed in this way
Line 11: Line 11:
{{{$$ Transform = [[sMR,M\mathbf{t}],[\mathbf{0}^T,1]]$$}}} {{{$$ Tr = [[sMR,M\mathbf{t}],[\mathbf{0}^T,1]]$$}}}
Line 15: Line 15:
{{{$$ Transform \mathbf{p}_{hc} = ( (sMR\mathbf{p} + M\mathbf{t})^T, 1 )^T $$}}} {{{$$ Tr \mathbf{p}_{hc} = ( (sMR\mathbf{p} + M\mathbf{t})^T, 1 )^T $$}}}
Line 17: Line 17:
In this way the result of applying a Transform is a rotation followed by scaling operation, followed by a translation and then finally the x mirroring operation is (optionally) applied. In this way the result of applying a Transform is a rotation followed by a scaling, followed by a translation and then finally the x mirroring operation is (optionally) applied.
Line 19: Line 19:
= Constructing a Transform = = Constructing a Transform in Python =

{{{

}}}

TableOfContents

What is a Transform?

We use the [http://blake.bcm.edu/eman2/doxygen_html/classEMAN_1_1Transform.html Transform] class for storing/managing Euler angles,translations, scales and x mirroring. At any time a Transform object defines a group of 4 transformations of a rigid body that are applied in a specific order, namely

$$ Tr \equiv M T S R $$

Where $$M$$ is a mirroring operation about the x-axis, $$T$$ is a translation, $$S$$ is a uniform, positive, non zero scaling operation and $$R$$ is a rotation. The Transformobject stores these transformations internally in a 4x4 matrix, as is commonly the case in computer graphics applications that use homogeneous coordinate systems (i.e. OpenGL). In these approaches the 4x4 transformation matrix is constructed in this way

$$ Tr = [[sMR,M\mathbf{t}],[\mathbf{0}^T,1]]$$

Where $$s$$ is the constant scaling factor, $$M$$ is the option x-mirroring operation which identity, except in the case of x mirroring where the (0,0) entry is -1, $$R$$ is a $$3x3$$ rotation matrix and $$\mathbf{t}=(dx,dy,dz)^T$$ is a post translation. In this approach a 3D point $$\mathbf{p}=(x,y,z)^T$$ as represented in homogeneous coordinates as a 4D vector $$\mathbf{p}_{hc}=(x,y,z,1)^T$$ and is multiplied by the matrix $$M$$ to produce the result of applying the transformation

$$ Tr \mathbf{p}_{hc} = ( (sMR\mathbf{p} +  M\mathbf{t})^T, 1 )^T $$

In this way the result of applying a Transform is a rotation followed by a scaling, followed by a translation and then finally the x mirroring operation is (optionally) applied.

Constructing a Transform in Python

EMAN2/TransformInPython (last edited 2023-09-29 12:51:26 by SteveLudtke)