Rotação em torno de um ponto específico (por exemplo, girar em torno de 0,0,0)

Tenho pesquisado muito sobre esse problema, mas não consegui encontrar uma resposta adequada.
Eu preciso girar um cilindro em torno de um determinado ponto (por exemplo, 0,0,0), mas o pivô do cilindro é dado por padrão. Como eu mudo isso?

eu encontreiisto tópico, e é bem o que eu gostaria de fazer, mas eu não sei como fazer isso com java.

Para explicar melhor o que eu gostaria de fazer, mostrarei 3 imagens.

imageshack.us/photo/my-images/259/aintgood.jpg

imageshack.us/photo/my-images/840/whatineed.jpg

imageshack.us/photo/my-images/705/nogoodn.jpg

Então, a primeira imagem mostra o meu problema básico, o cilindro deve ser posicionado com o final no centro da esfera, digamos (0,0,0). O usuário dá dois ângulos. O primeiro é para um comando rotX, o segundo para um rotZ. O pivô do cilindro está no seu centro, assim, como mostra a imagem 3, mesmo se eu traduzir o cilindro de modo que a sua extremidade esteja no centro da esfera, quando ele girar, a coisa toda será destruída.

A imagem 2 mostra como deve ser o grupo de esferas de cilindro, independentemente dos ângulos dados. A imagem não é obtida com base em um algoritmo, mas com base em cálculo e em mouserotated.

questionAnswers(1)

yourAnswerToTheQuestion