you can create two orthogonal tangents by projecting the normal onto it's maximal coordinate plane (for numerical stability) and normalising and rotating it 90 degrees in the plane, the cross product of this and the normal will then give you a second, orthogonal tangent

aka:

normal = (A,B,C)/sqrt(A^2+B^2+C^2) m = min{|A| ,|B| ,|C|} (m==|A|) -> tangent = (0,-C,<img src='http://public.gamedev.net/public/style_emoticons/default/cool.gif' class='bbc_emoticon' alt='B)' />/sqrt(C^2+B^2) (m==|B|) -> tangent = (-C,0,A)/sqrt(C^2+A^2) (m==|C|) -> tangent = (-B,A,0)/sqrt(B^2+A^2) bitangent = cross(normal,tangent).

then each point on the circle of radius R in the plane centred at P would be:

P + R*(cos(theta)*tangent + sin(theta)*bitangent)