i posted @ this post before, still not solve following problem completely. example: {pa, pb, pc, pd} = {{0, 0, sqrt[61/3]}, {sqrt[7], 4*sqrt[2/3], 0}, {0, -5*sqrt[2/3], 0}, {-sqrt[71], 4*sqrt[2/3], 0}}; axis={1,0,0};pt={0,1,0}; plotpolygon[{a_, b_, c_}] := {opacity[.4], polygon[{a, b, c}]}; graph=graphics3d[{plotpolygon[{pa, pb, pc}], plotpolygon[{pa, pb, pd}], plotpolygon[{pb, pc, pd}], plotpolygon[{pa, pc, pd}]}, axes -> true, axesorigin->pt]; animate[graph/.gg : graphics3d[___] :> rotate[gg, theta, axis], {theta, 0., 2.*pi}] i want rotate along axis axis={1,0,0} passes point pt={0,1,0} . don't know how specify point information. rotation animation seems chaotic in sense expect @ least 1 point (in case, origin?) not rotating. you need first change origin of vertices of polygon, rotate, , translate back. can hand (rotationmatrix[theta,axis].(#-pt) + pt)& /@ {pa, pb, pc, pd} or, can combine transformations using compo...