Dúvida Graphics2D

Tenho uma dúvida que pode ser boba, pesquisei na internet alguma coisa mas não consegui.

Estou fazendo um laboratório de Computação Gráfica, no qual você passa coordenadas e ele cria um ponto, reta ou polígono, até ai tudo bem, o problema é que tenho que implementar algumas transformações como translação, rotação e escalonamento, ou seja vou precisar pegar o objeto e alterar suas configurações, o problema é que não sei como recuperar as coordenadas do objeto, por exemplo vejam o método que cria uma reta abaixo, eu crio o reta (Graphics2D), porém não sei como acessar ele posteriormente para aplicar uma translação por exemplo, achei algo como createGraphics(); mas acho que não serve para meu caso, alguém tem alguma ideia do que posso fazer para depois de criado o objeto eu consiga alterá-lo novamente?

public void desenharReta(double x1, double y1, double x2, double y2){
              
        Graphics2D reta = (Graphics2D) this.getGraphics();
             
        reta.setColor(Color.red);         
        
        Object[] o = transformadaViewPort(x1, x2, y1, y2);
        
        x1 = (double) o[0];
        x2 = (double) o[1];
        y1 = (double) o[2];
        y2 = (double) o[3];       
        
        reta.drawLine((int)x1, (int)y1, (int)x2, (int)y2);          
        
}

O que você precisa é simplesmente deixar as variáveis referentes aos objetos fora do método desenharReta, pertencendo à uma classe qualquer (exemplo: o JPanel onde é feito o desenho). Assim, você poderá recuperar os dados desse objeto e alterá-los.

Exemplo simplificado (não compila):

 public class DrawPanel extends JPanel{
   private Line2D reta;

   public DrawPanel(){
     reta = new Line2D.Float(0, 0, 100, 100);
   }

   protected void paintComponent(Graphics g){
       Graphics2D g2 = (Graphics2D) g.getGraphics();

       g2.setPaint(Color.red);         
       g2.draw(reta);

       g2.dispose();
   }

  public void alterarReta(int newX1, int newY1, int newX2, int newY2){
    reta.setLine(new Point2D.Float(newX1, newY1), new Point2D.Float(newX2, newY2));
  }

}

Assim, na classe que contém esse JPanel, você poderia usar o método alterarReta() para mudar as coordenadas da linha. Você pode ir além, criando uma classe que contenha a reta e os métodos para desenhá-la e modificar suas propriedades (como cor e espessura).

Recomendo a leitura: http://www.pontov.com.br/site/index.php/java/48-java2d

Abraço.