Ver Mensaje Individual
  #10 (permalink)  
Antiguo 23/01/2004, 11:35
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 4 meses
Puntos: 45
simplicidad 100%

Trabajando con la libreria, caricatos, me he dado cuenta que necesitaba una cosa mas simple para trabajar, algo mas pobre, porque tu codigo para mi es demasiado grande (aunque no por ello malo, me parece fantastico). He hecho una "libreria" que dibuja puntos, rectangulos y circulos, estos dos ultimos con la posibilidad de hacerlo con bordes. Falta por implementar que haga lineas, pero estoy trabajando en ello:


Código PHP:
document.write('<style>.pto { width:2; height:1; position:absolute; font-size:1; }</style>');

function 
ptoObj(x,y,color) {            //objeto punto. color en rrggbb
    
this.x=xthis.y=ythis.color=color;    
    
this.generar=function() {
        
document.write("<div class='pto' style='background-color:#"+this.color+";top:"+this.y+";left:"+this.x+";'></div>");
    }
}

function 
cuadObj(x,y,w,h,color) {
    
this.x=xthis.y=ythis.w=wthis.h=hthis.color=color;
    
this.generar=function() {
        
document.write("<div class='pto' style='background-color:#"+this.color+";top:"+this.y+";left:"+this.x+";width:"+this.w+";'></div>");
        
document.write("<div class='pto' style='background-color:#"+this.color+";top:"+this.y+";left:"+this.x+";height:"+this.h+";'></div>");
        
document.write("<div class='pto' style='background-color:#"+this.color+";top:"+(this.y+this.h)+";left:"+this.x+";width:"+this.w+";'></div>");
        
document.write("<div class='pto' style='background-color:#"+this.color+";top:"+this.y+";left:"+(this.x+this.w)+";height:"+(this.h+2)+";'></div>");
    }
    
this.rellenar=function(color) {
        
color=color==null?this.color:color;    //si no se pone el color, que sea el mismo que el del cual
        
document.write("<div class='pto' style='background-color:#"+color+";top:"+(this.y+2)+";left:"+(this.x+2)+";width:"+(this.w-2)+";height:"+(this.h-2)+";'></div>");
    }
}

function 
circObj(x,y,radio,color) {
    
this.x=xthis.y=ythis.radio=radiothis.color=color;
    
this.generar=function() {
        for(
a=0;a<360;a+=0.25) {
            
ang=a*Math.PI/180;                //a radianes
            
posX=(Math.cos(ang)*this.radio)+this.xposY=(Math.sin(ang)*this.radio)+this.y;
            
document.write("<div class='pto' style='background-color:#"+this.color+";top:"+posY+";left:"+posX+";z-index:2;'></div>");
        }
    }
    
this.rellenar=function(color) {        //color es optativo
        
color=color==null?this.color:color;    //si no se pone el color, que sea el mismo que el del circ
        
for(a=90;a>-90;a-=0.5) {        //recorremos cada angulo en los cuadrantes 1º y 4º (los de la dcha del circ)
            
rad=a*Math.PI/180;    //radianes
            
y=this.y-Math.sin(rad)*this.radio;
            
width=(Math.cos(rad)*this.radio)*2width+=1;    // el 1 es para el margen de error por los decimales ;-)
            
x=this.x-(width/2);
            
document.write("<div class='pto' style='background-color:#"+color+";top:"+y+";left:"+x+";width:"+width+";z-index:1'></div>");
        }
    }
}


miPto=new ptoObj(30,30,"ff00ff");
miPto.generar();

miCuad=new cuadObj(50,100,50,100,"996643");
miCuad.generar();
miCuad.rellenar();

miCirc=new circObj(300,300,200,"ff0000");
miCirc.generar();
miCirc.rellenar("ff9933"); 
(caricatos fijate en lo del relleno del circulo, porque he visto que utilizas mucho codigo para rellenarlo, haber si lo entiendes).

Espero que le sirva a mucha gente.


Un saludo
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.