[chimera-dev] Accessing rotation matrix of molecule models

Mike Liang mliang at stanford.edu
Thu Jul 18 18:14:03 PDT 2002

Hi guys,

Thank you so much for your quick responses.  They were exactly what I was
looking for.


On Thu, 18 Jul 2002, Greg Couch wrote:

Date: Thu, 18 Jul 2002 18:03:12 -0700 (PDT)
From: Greg Couch <gregc at cgl.ucsf.edu>
To: Thomas Goddard <goddard at cgl.ucsf.edu>
Cc: mliang at Stanford.EDU, chimera-dev at cgl.ucsf.edu
Subject: Re: [chimera-dev] Accessing rotation matrix of molecule models

Think of globalXform() as happening in the global (world/lab) coordinate
space and localXform() as happening the the model's coordinate space.

The point of having globalXform and localXform is to avoid having to know
if the coordinates are a row vector or a column vector with the
corresponding opposite orders of multiplication for the global/local
effect.  You don't know and you don't care :-) -- you just pick where you
want the transformation to take place.  That said, chimera's
transformations are for a right-handed coordinate system with coordinates
written as column vectors.


On Thu, 18 Jul 2002, Thomas Goddard wrote:

>   I forgot to mention that the difference between the OpenState
> localXform(xform) and globalXform(xform) routines.  These routines
> change the current openState.xform by multiplying the xform argument
> on the right or left respectively.  If c = atom.coord() and orig_xf is
> the current openState.xform then the displayed position is orig_xf * c.
> After calling openState.localXform(xform) the displayed position is
>        orig_xf * xform * c,
> while after openState.globalXform(xform) the displayed position is
>       xform * orig_xf * c.
>   Tom

More information about the Chimera-dev mailing list