This belongs more to computer graphics than anything, but hey, we gotta start somewhere right? Here's hoping someone (like TT, /0, kamil, ahmad, dcc, etc) will stumble across and find this interesting.
A water molecule can be thought of as if it is in a tetrahedral conformation when it is in a regular ice (ice-1h) lattice. In this case, we ignore hydrogens except those on the central water molecule, thus each oxygen has four other oxygen neighbours. The central oxygen has a position vector

, has two hydrogens (H-bond donors),

and

, both of which are hydrogen-bonded to oxygens

and

. Also,

accept two hydrogen bonds from two other near-by water molecules, these two water molecules have oxygen centers at positions

and

.
Note that between O4 and O2, there is a H (but we ignore it). Same goes for O3 and O2.
O4
.
.
.
O3.....O2--H1.....O0
|
H2
.
O1
Now, the question is, I wish to rotate this molecule about the O2-H1 axis. If I define

to be the angle between the plane O2-O1-H1 and O2-O3-H1, and I wish to rotate H2 by

towards O3, is there a simple algorithm? Currently, my algorithm is rather painfully long.
The only information I have is position vectors, and that theta is roughly 120 degrees (the tetrahedron is slightly deformed, not perfect, thus why I can't cheat and simply give it new coordinates).
This is probably going to end up like one of my many queries that end up with zero responses, but if you take your time, I will be VERY grateful

Cheers,