if (o instanceof Vertex) {
cuantos++;
v = (Vertex)o;
if (isLocked(v))
continue;
Coordinates coord = getCoordinates(v);
junk = v.getUserDatum("level");
if (junk instanceof Integer) {
lvl = (double)((Integer)junk).intValue();
}
if (lvl != nivelVisitado)
continue;
// calcular el angulo segun la cantidad de Vertices
// en este nivel vCant
// level_num cantidad de niveles
//double angle = (2 * Math.PI * angles[(int)lvl-((int)lvl > 0?1:0)]++) / angles[(int)lvl-((int)lvl > 0?1:0)];
//double angle = (2 * Math.PI * angles[(int)lvl-((int)lvl > 0?1:0)]++) / (vertices.size() / level_num);
// funca double angle = (Math.PI * angles[(int)lvl-((int)lvl > 0?1:0)]++) / (double)(vertices.size() / level_num) ;
// calcular el x,y segun la cantidad de niveles
// coord.setX(Math.cos(angle) * (width / 2) + (radius * (lvl / level_num)));
// coord.setY(Math.sin(angle) * (height / 2) + (radius * (lvl / level_num)));
//coord.setX(Math.cos(angle) * radius + width / 2);
//coord.setY(Math.sin(angle) * radius + height / 2);
double angle = (2 * Math.PI * i++) / vCant;
double cosX = Math.cos(angle);
double sinY = Math.sin(angle);
double xradius = (radius + (width * (lvl / level_num)));
double yradius = (radius + (width * (lvl / level_num)));
coord.setX(cosX * xradius + (width / 2));
coord.setY(sinY * yradius + (height / 2));
if (coord.getX() == 0d || coord.getY() == 0d) {
System.out.println("Oops... alguna coordenada es 0");
}
// test
LinkedList parents = (LinkedList)v.getUserDatum("parents");
Vertex parent = null;
if (parents != null) {
parent = (Vertex)parents.getFirst();
if (parent != null) {
Coordinates pcoords = getCoordinates(parent);
if (pcoords.getX() == 0 || pcoords.getY() == 0) {
continue;
}
double normaParent = Math.hypot(pcoords.getX(), pcoords.getY());
double normaYo = Math.hypot(coord.getX(), coord.getY());
System.out.println("normaParent: " + normaParent + " normaYo: " + normaYo);
double porcent = 0;
if (normaParent > normaYo) {
porcent = normaParent / normaYo;
coord.setX(coord.getX() * porcent);
coord.setY(coord.getY() * porcent);
} else {
porcent = normaYo / normaParent;
coord.setX(pcoords.getX() * porcent);
coord.setY(pcoords.getY() * porcent);
}
}
if (coord.getX() == 0d || coord.getY() == 0d) {
System.out.println("Oops... despues ... alguna coordenada es 0");
}