Consulta sobre grafica en applet

Milagros Gabriela Quiñones Ticona <[email protected]>
Newsgroups gmane.comp.java.javaspain
Message-ID <[email protected]>
Hola a todos,

Comienzo a programar en java y estoy tratando de graficar en applets convirtiendo coordenadas 
este es el codigo de la grafica que basicamente debe graficar los ejes x y y, y una recta de tamaño constante que gira como un radio con centro en x=0 y=0 el problema esta en que el punto de origen de la recta cambia cuando cambio el angulo de rotacion quisiera si algui puediera ayudarme a fijar el punto de rotacion

Gracias

Milagros.


import java.awt.*;
import java.applet.*;
public class prueba extends java.applet.Applet {
 
   public void init (){
  setBackground(Color.black);
 }
 
   public void paint(Graphics g) {
     
           int x,y,x1,y1,xc,yc;
       
       int xsm1=0, ysm1=0;
       int xsm2=0, ysm2=0;
       
       int xsc1=0, ysc1=0;
       
       int a = 0;
    
       xc=200;//Mitad del ancho del applet
       yc=200;//Mitad de la altura del applet
       
       //***************Punto inicial*************
       xsc1=200; //centro x =200
       ysc1=0;   //centro y =0
       
       //*** DIBUJA LOS EJES DE COORDENADAS XY ***
       g.setColor(Color.red);       //Establece el color rojo
       g.drawLine(xc,0,xc,2*yc); //Dibuja el eje Y
       g.drawLine(0,yc,2*xc,yc); //Dibuja el eje X
  
           
    
  /*************************************************************************************/
       
      /* [xc+x,yc-y,1]  Punto en sistema maquina
         [x*cos(ang) + y*-sen(ang), x*sen(ang)+y*cos(ang), 1] Punto rotado
       
              //PUNTO ROTADO EN EL SISTEMA HUMANO  
       x1 = (int)(Math.round(x*Math.cos(ang) + y * -Math.sin(ang)));
       y1 = (int)(Math.round(x*Math.sin(ang)+y*Math.cos(ang)));    */
/*******************************************************************************************/
       // Punto rotado en sentido antihorio
     /*  xsm1 = (int)(Math.round((xsc1)*Math.cos(a*(Math.PI/180))+(ysc1)*-Math.sin(a*(Math.PI/180))));
       ysm1 = (int)(Math.round((xsc1)*Math.sin(a*(Math.PI/180))+(ysc1)*Math.cos(a*(Math.PI/180))));
     g.setColor(Color.black);
       
       g.drawLine(xc,yc,xsm1,ysm1);*/
/*******************************************************************************************/
/*
       // Punto rotado en sentido horario
       xsm2 = (int)(Math.round((xc+xsc1)*Math.cos(a*(Math.PI/180))+(yc-ysc1)*Math.sin(a*(Math.PI/180))));
       ysm2 = (int)(Math.round((xc+xsc1)*-Math.sin(a*(Math.PI/180))+(yc-ysc1)*Math.cos(a*(Math.PI/180))));
     g.setColor(Color.green);
       
       g.drawLine(xc,yc,xsm2,ysm2);*/
/**********************************************************************************************/
 
while (a<360) {
 
 if (a>350) a=0;
 
 // Punto rotado en sentido horario
       xsm2 = (int)(Math.round(xsc1*Math.cos(a*(Math.PI/180))+ysc1*-Math.sin(a*(Math.PI/180))));
       ysm2 = (int)(Math.round(xsc1*Math.sin(a*(Math.PI/180))+ysc1*Math.cos(a*(Math.PI/180))));
       double ix =(Math.round(xsc1*Math.cos(a*(Math.PI/180))+ysc1*-Math.sin(a*(Math.PI/180))));
       double iy =(Math.round(xsc1*Math.sin(a*(Math.PI/180))+ysc1*Math.cos(a*(Math.PI/180))));
     g.setColor(Color.green);
           
     a=a+10; 
     
     //PUNTO ROTADO EN EL SISTEMA MAQUINA
       g.fillOval(xsm2,ysm2,5,5);
     
    
     g.setColor(Color.red);
    g.drawLine(xc,0,xc,2*yc); //Dibuja el eje Y
    g.drawLine(0,yc,2*xc,yc); //Dibuja el eje X
    
/*   //borra la linea del applet
 g.setColor(Color.white);
 g.drawLine(xc,yc,xsm2,ysm2);*/
   
 }
}

}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.