Mostrando las entradas con la etiqueta tool. Mostrar todas las entradas
Mostrando las entradas con la etiqueta tool. Mostrar todas las entradas

jueves, 16 de febrero de 2017

Deducción de un circulo partiendo de 3 puntos conocidos

Si tenemos tres puntos, podemos suponer que son parte de una circunferencia.


La formula es sencilla. Teniendo los puntos A,B,C, trazo la línea que pasa por AB y la roto 90 grados (la rotación tiene centro a la mitad de ambos puntos) sea (AB)'. Pues bien, créanlo o no, esta línea pasa por el centro de la circunferencia. Si hago lo mismo con los puntos BC para obterner (BC)', entonces, el punto de colisión entre (AB)' y (BC)' será el centro de la circunferencia.


Acá pongo las funciones de javascript para hacerlo

var linesColition=function(x1,y1,m1,x2,y2,m2){
var mm=m1-m2,x,y;
if(m1==m2) return false;
if(isNaN(m1*0)){
x=x1;
y=m2*(x-x2)+y2;
}else
if(isNaN(m2*0)){
x=x2;
y=m1*(x-x1)+y1;
}else{
x=( m1*x1 -m2*x2 +y2 -y1 )/mm;
y=( m2*y1 -m1*y2 +m1*m2*(x2 -x1) )/-mm;
}
return [x,y];
};

var getCircleByThreePoints=function(A,B,C){
var x1=(A[0]+B[0])/2, y1=(A[1]+B[1])/2, m1=(A[0]-B[0])/(B[1]-A[1]),
x2=(B[0]+C[0])/2, y2=(B[1]+C[1])/2, m2=(B[0]-C[0])/(C[1]-B[1]),
p=linesColition(x1,y1,m1,x2,y2,m2), w=p[0]-A[0], h=p[1]-A[1],
r=Math.sqrt(w*w+h*h);
return p? p.concat(r): false;
}

Y se usa algo así, pasandole los puntos A,B,C. Devuelve un arreglo [x,y,radio]:

circle=getCircleByThreePoints( [-10,-5], [0,-10], [2,-7] );


martes, 10 de enero de 2017

Imagen Transparente Base64

En ocaciones requerimos de el código en base64 de una imagen transparente. Acá dejo una herramienta para obtener el código de una imagen de "x" por "y" dimensiones.