OK, not simple, but very impressive what you can do with the "molecular
math".  (I especially like the use of improper angles.)

Now, if I want to orient along an line (as opposed to along a bond), can I
do it the same way?  Is there a way to extract the endpoints of a line?
When I tried something like x = @line1.x I get what appears to be the center
point of the line instead of either end.  I guess I can always pass the
information to Jmol using Javascript, since that's how I created the line in
the first place.

Dean


On 6/15/07 12:58 AM, "Bob Hanson" <[EMAIL PROTECTED]> wrote:

> This is better -- it uses improper angles to set the sign of the angle
> correctly.
> 
> Bob Hanson wrote:
> 
>> no simple way. HOWEVER, you could do the calculation I think. Let's see
>> if it can be done with a Jmol script...
>> 
>> Let's say we want to align the axis between atom 1 and atom 2 along the
>> Z axis.
>> 
>>      Y
>>      |
>>      +--X
>>     /
>>    Z
>> 
>> Strategy: rotate the axis around the Z axis into the XZ plane, then
>> rotate it around the Y axis into the YZ plane.
>> To do this, we need two angles:
>> 
>> a) the angle of the axis projected into the XY plane and the X axis,
>> and, after that,
>> b) the angle between the axis and the Z axis.
>> 
>> try this:
>> 
>>  
>> 
> 
> #atoms to align:
> 
> a1 = 1
> a2 = 2
> 
> # just for testing:
> 
> select *;color cpk;
> select atomno=a1;color yellow;spacefill 0.40;
> select atomno=a2;color green;spacefill 0.25
> select atomno=a1 or atomno=a2; label on
> set axesmolecular
> axes on
> 
> 
> # align molecular and window frame coordinate system;
> 
> reset
> select *
> 
> 
> # move atom 1 to {0 0 0}:
> 
> x = -{atomno=a1}.x
> y = -{atomno=a1}.y
> z = -{atomno=a1}.z
> 
> translateSelected [EMAIL PROTECTED] @y @z}
> 
> # into the XZ plane, using an improper angle:
> 
> axisAB = {atomno=a2}.xyz - {atomno=a1}.xyz
> 
> x = axisAB.x
> y = axisAB.y
> #echo %{x} %{y}
> 
> 
> projAB = [EMAIL PROTECTED], @y, 0}
> angleA = angle(projAB, {0 0 0}, {0 0 1}, {1 0 0})
> #echo %{angleA}
> 
> rotateSelected Z @angleA
> 
> # move atom 1 to {0 0 0}:
> 
> x = -{atomno=a1}.x
> y = -{atomno=a1}.y
> z = -{atomno=a1}.z
> 
> translateSelected [EMAIL PROTECTED] @y @z}
> 
> 
> # onto the Z axis, using an improper angle:
> 
> axisAB = {atomno=a2}.xyz - {atomno=a1}.xyz
> 
> x = axisAB.x
> z = axisAB.z
> #echo %{x} %{z}
> 
> projAB = [EMAIL PROTECTED], 0, @z}
> angleA = angle(projAB, {0 0 0}, {0 1 0}, {0 0 1})
> #echo %{angleA}
> 
> rotateSelected Y @angleA
> 
> # move atom 1 to {0 0 0}:
> 
> x = -{atomno=a1}.x
> y = -{atomno=a1}.y
> z = -{atomno=a1}.z
> 
> translateSelected [EMAIL PROTECTED] @y @z}
> 
> 
> 
> Bob
> 
> 
> -------------------------------------------------------------------------
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> _______________________________________________
> Jmol-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/jmol-users



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Jmol-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jmol-users

Reply via email to