Rotacionar Graphics

Boa tarde pessoal, estou criando um jogo para a faculdade, e estou com dificuldade para rotacionar uma imagem… Já procurei na internet, encontrei inúmeros métodos, mas não consigo fazer nenhum se adequar a maneira a qual estou trabalhando.

Então é o seguinte, tenho um tanque e um cano, a intenção é com a variação do angulo, eu rotacionar o cano no eixo (0,3) sendo que o cano é (68,6), de modo a parte traseira ficar fixa, como se fosse uma eixo, ou braço… e depois fundir a imagem do tanque e jogar na tela.

a fusão eu já fiz, agora a rotação em um eixo que não é centralizado retornando uma imagem na qual seja possível unir as mesmas estou com dificuldades, há como alguém me ajudar dando dicas, links ou soluções?

    private String tanquePath = "/images/tanque_normal.png";
    private String canoPath = "/images/cano_normal.png";
    private int x;
    private int y;
    private Image tanqueIMG;
    private int angulo;

    public Tanque() {

        ImageIcon corpo = new ImageIcon(this.getClass().getResource(tanquePath));
        ImageIcon cano = new ImageIcon(this.getClass().getResource(canoPath));

        tanqueIMG = juntaCorpoCano(corpo.getImage(), cano.getImage());
        // imagem do tamanho em que o tanque + cano podem girar livremente
        // fazendo -20 a a 90 graus
        width = 85;
        height = 85;
        visible = true;
        x = 100;
        y = 350;

        tiros = new ArrayList();
    }

    public Image rotacionaCano(Image cano, int angulo) {
        BufferedImage novaImagem = new BufferedImage(85, 85, BufferedImage.TRANSLUCENT);
        Graphics g = novaImagem.getGraphics();
        g.drawImage(cano, 25, 59, null);
        // agora rotacionar imagem em sei la onde

        return novaImagem;
    }

    public Image juntaCorpoCano(Image corpo, Image cano) {
        BufferedImage novaImagem = new BufferedImage(85, 85, BufferedImage.TRANSLUCENT);
        Graphics g = novaImagem.getGraphics();

        g.drawImage(rotacionaCano(cano, 0), 0, 0, null);
        g.drawImage(corpo, 0, 56, null);

        return novaImagem;
    }




Não tenho certeza mas acho que a classe Graphics2D tem o método rotate().

Graphics2D g2d = (Graphics2D) g ; g2d.rotate(parametro);